英文原文:PNG can be a lossy format
PNG 是一种无损图片格式,也就是说,PNG 图片会完全保留一幅图片的所有细节,即使那些肉眼难以察觉的细微部分。保留这些细微部分的细节牺牲了不少文件大小。
相较而言,有损图片格式(如 JPEG)可以生成更小的文件,因为有损图片格式并不保存不必要的细节。
好消息!PNG 可以用作有损格式并且生成的几分之一大小的文件,同时完美兼容无损 PNG 的解码器。
有损平均滤波器
PNG 具有根据左、上的相邻像素推测像素的能力。成功推测的像素几乎可以被完全压缩。
正常情况下,只有很少的像素被成功推测。但是最新的 ImageAlpha 的 Blurizer 选项可以操作图片数据匹配推测,这样使压缩效果更好。
下面是一张经过强力压缩的图片,来展示这种有损压缩的效果
对角模糊。77KB(原始尺寸550KB)。这个算法基于 Michael Vinther 和 William MacKay 的作品。
PNG8
通常 PNG 的每个像素需要需要 4 个字节,R、G、B和α通道。PNG8 通过存储彩色调色板的索引减小了3/4 的文件大小。ImageAlpha 使用了 pngquant2——它拥有一个非常高级的色彩选择算法并保留α透明度。
64 色图片。111KB(原始尺寸714KB)
色调分离
色调分离以一种比图像处理程序中色调分离过滤器更智能的方法,减少一个文件中独立色阶的数目。这种缩减是图片中的噪声更易于压缩。
中位切分色调分离。100KB(原始尺寸374KB)
有损PNG和GIF、JPEG对比
GIF 采用一种过时的压缩算法,完全就是浪费带宽。即使有损 GIF 也比经过优化的无损 PNG 效果差。
有损 PNG 是否比 JPEG 拥有更好的效果依赖于图片。JPEG 通常效果更好,文件大小更小。除非图片中有尖锐的边(如文本)或任何透明效果(JPEG 根本不支持透明)。
优化过的 PNG 仍然要比有损 JPEG-XR/WebP/JPEG-2K 文件更大一些。但于那些图片格式不同,PNG 能为所有的浏览器和操作系统完美支持。
自己动手试试
使用 ImageAlpha,你可以对每一个文件选择最合适的有损算法,并且以几乎不牺牲质量的同时获取1/2 文件大小的压缩。
下载 OS X 最新版本(或单独下载可移植的 posterizer/blurizer 和 pngquant2)。全部是开源的。请捐款支持我的图片压缩工具和相关研究。