图片是如何被压缩的?
图片是如何被压缩的?

图片是如何被压缩的?

在日常生活中,可能会遇到发生某张图片到社交媒体时,平台提示你“文件过大”。或者当访问某个网站时,图片会因为体积较大,出现加载缓慢的情况。

这时,可能会想到“压缩一下图片”,那么图片是如何被压缩的呢?

压缩的本质

压缩的目的在于让图片文件变小,内容看上去差不多。

就像泡茶一样,泡茶叶和少泡茶叶,在分量上茶叶少了一点,都泡出来的茶味道相差不多。

图片也是一样,通过一些方法,“删除”或“近似”哪些对人眼部敏感的图像细节,换取更小的问题。

图片被压缩的过程

以最常用的JPEG图片为例,压缩过程大概可以分为5个步骤:

第一步:颜色空间转换(RGB转换为YCbCr)

图片原本是RGB(红、绿、蓝)数据,但是人眼对“亮度”更敏感,对“颜色”不敏感。

所以,把图片转换为:

1、Y(亮度):黑白层级;

2、Cb / Cr(色彩):颜色信息;

这种分离让后面的步骤可以“牺牲颜色信息”,而不影响肉眼观感。

第二部:分块(通常 8×8 像素)

图像被分成一块块 8×8 的像素小方格,每块单独处理,方便后续压缩和定位。

第三步:离散余弦变换(DCT)

对每个 8×8 块进行 DCT 变换,把像素值变成频率数据。

低频:图像的轮廓、结构(重要);

高频:细节、纹理、噪点(不太重要)。

左上角是「直流分量DC」,表示这块图像的亮度平均值,是图像的低频部分;

越往右下角,是图像的高频部分,代码图像细节(比如边缘、纹理);

多数高频是0或者接近0,说明这块图像很平滑,可以压缩掉这些细节。

第四步:量化(画质损失步骤)

在 JPEG 图片压缩中,有一个很关键的操作,叫做「量化」,也就是故意降低某些图像细节的精度,从而减小文件大小。

因为人眼对高频(细节)的敏感度低,所以JPEG会:

1、对这些频率数据进行“量化”:除以一个数字(叫做量化因子)再四舍五入,保留整数;

2、如果数字太小,结果为0,则表示“丢掉了这部分信息”。

例如:

当量化因子为10时,原始频率值为120,结果为12;

量化因子为50时,原始频率值为8,结果为0,这部分信息就被丢掉了。

所以:

量化因子越大时,精度越低,图片越模糊,文件越小;

量化因子越小时,保留更多信息,清晰度更高,文件也更大。

第五步:编码(压缩体积)

把量化后的数据用霍夫曼编码、Run-Length 等方式再压一遍;

相当于把“12, 12, 12, 0, 0, 0”变成“(12×3), (0×3)”这样的压缩形式。

最后,实现图片的压缩。

为什么有时压缩体积很大但“看不出损失”?

因为人眼有很多局限:

1、对亮度敏感,对颜色不敏感,压缩算法可以丢掉很多色彩信息;

2、静态图片比动态图更难感知差异,静态图片可以进一步压缩;

3、忽略细节模糊区域,背景/单色区域可以大量压缩。

因此,在亮度变化不强烈、边缘不锐利的途中,即使压缩 70% 质量,看起来几乎一样。

在Mac中如何压缩图片?

在Mac应用中,可以使用「轻压图片」压缩JPG、JPEG和PNG等图片。

默认使用macOS原始压缩功能,还可选第三方开源工具 pngquant 对PNG图片进行高效压缩,压缩率最高可达 99%。

支持拖拽、点击选择或Command + V 等方式,将图片快速导入应用。所有导入的图片都会在本地立即压缩,压缩后可以单独或使用ZIP披露下载全部图片。

还可以根据需求调整压缩率、设置输出目录、启用/禁用 pngquant 等第三方压缩引擎。

轻压图片免费,无广告、承诺不将用户的图片上传到第三方服务器、不主动采集用户隐私数据数据。在未赞助状态下,应用限制每次最多导入 20 张图片,单张图片大小不超过 5MB。如轻压图片对您有帮助,欢迎通过应用内进行赞助支持,赞助后将解除上述限制。

轻压图片是一款为注重效率、隐私与简洁体验而生的图片压缩工具,适合开发者、设计师、内容创作者与所有希望减小图片体积的人群使用。

下载路径:在Mac App Store中输入「轻压图片」,即可免费下载、使用。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注