2026-10-07
上传被拒之后,多数人会遇上同一个选择:压缩还是改尺寸。两者都能让文件变小,相似之处到此为止。改尺寸直接丢掉一部分像素,剩下那部分保持原样;压缩一个像素都不动,只把这些数据怎么存变得更省。选错了,要么文件还是超限,要么图糊了。这篇用同一张照片的实测数字把两件事分开讲清楚。
改尺寸改的是像素总数。4000×3000 变成 1200×900,等于从原来的网格里重新取样一次,留在格点之间的细节就此消失,没有任何工具能把它们找回来。剩下那部分像素的值没有被重新编码,所以边缘和文字依然锐利。
压缩不动像素网格,动的是这些像素的存储方式。JPEG、WebP 这类有损格式挑人眼不敏感的细节丢掉,PNG 这类无损格式只去掉统计上的冗余,解压后能还原到一模一样。质量参数往下压,压缩痕迹就开始显出来了。
下面用一张手机直出的 4000×3000 照片举例,数字是这类文件的常见量级,不代表所有设备。
最后两行的对比最能说明问题:先改尺寸再压一次,体积最小画质还行;连续压缩三次,体积反而更大,画质更差。
从这张图最终用在哪倒推。页面上只占 800 像素宽的位置,那就没什么好讨论的:先改尺寸,再轻轻压一次。
多数画质问题都来自下面这几条,而不是算法本身。相关做法可以接着看 /blog/lossy-vs-lossless-compression、/blog/resize-and-compress-image 和 /blog/compress-jpg-under-100kb。
看怎么定义。剩下的像素没有被重新编码,所以在目标尺寸下看是清楚的;被丢掉的那些细节确实没了,放大会遇到软边。判断标准应当是「在多大尺寸下看」,而不是绝对画质。
图上放多大就先改成多大,多数情况是展示宽度的两倍左右,然后再压一次。只有在像素尺寸必须保留时才反过来,比如带文字的截图和要用于印刷的文件。
不能。插值放大只会根据周围像素猜,看着像素数回来了,细节回不来。这也是为什么改尺寸之前一定要留一份原始文件。
改尺寸只按像素数降一档。原图本身编码效率很低,或者带 alpha 通道、元数据、多张预览图时,降完还是偏大。这时候在改尺寸之后补一次压缩,通常还能再降一半以上。