跳转到主要内容
参数调优5 分钟

缩放算法怎么选:Lanczos、Bicubic 与 Bilinear

缩放对话框里躺在算法下拉框的三个名字,大多数人从没打开看过。但“缩完发糊”和“缩完很锐”的差别,往往就藏在这一格默认值里。

三种算法在工作方式上的差别

缩放的本质是用邻域像素估算新像素,差别就在“看多大的邻域、怎么加权”。Bilinear 看 2×2 的四个邻居,线性插值,速度最快,代价是高频细节被抹平,画面偏软。Bicubic 看 4×4 邻域,用三次曲线加权,锐度与速度居中,是最常见的默认值。Lanczos 看更大的窗口(通常 6×6 以上),用多抽头 sinc 核加权,边缘与纹理保留最好,速度最慢。

一句话记忆:Bilinear 求快、Lanczos 求好、Bicubic 居中。三者输出尺寸完全一样,差的是细节保留程度与耗时。

降采样:为什么推荐 Lanczos

把 1080p 缩到 720p,属于降采样(缩小)。缩小时多个源像素要合并成一个目标像素,算法的责任是“选哪些信息代表这一组”。Bilinear 合并时简单平均,细密的纹理(头发、树叶、文字笔画)容易出摩尔纹或糊成一片;Lanczos 的多抽头核在缩小时能更好地保留边缘对比,字不会糊、轮廓不发虚。

缩放比例越大(比如缩一半以上),算法差距越明显;缩 10% 到 20% 这种微调,肉眼几乎看不出区别,选快的即可。另一个规律:先缩后压的总损耗大于先压后缩,缩放这一步用足质量,压缩那步才有得省。

升档:算法救不了不存在的细节

反过来把 480p 放大到 1080p,任何算法都只是在猜像素。Lanczos 放大的结果会比 Bilinear 锐一些,但锐不等于真——细节并没有增加,只是边缘更硬。升档的物理极限决定了算法选择是次要问题,要不要升才是主要问题。

仅在平台强制要求分辨率(比如封面图必须 1280 宽)时才做升档,并把期待放在“符合规格”而不是“变清晰”上。

图片侧同理与两个特例

图片缩放用的是同一族算法,选法一致:头像、截图、带文字的图片一律 Lanczos,字口不清是最容易被一眼看穿的翻车点。照片类对算法不敏感,Bicubic 也够用。

两个特例:像素画、二维码不要用任何平滑算法,请用最近邻(Nearest)——它们依赖硬边缘,平滑即毁。屏幕录制里的代码窗口同理,缩放后文字锐度优先于一切。

常见问题