同事发来了一篇《Clever JPEG Optimization Techniques》,文中提到的部分技术很细致,分享下。
大部分人在考虑图像压缩优化的时候,还只停留在设置图像处理软件的保存选项上。另外我们也有一些常用的优化工具,诸如OptiPNG和jpegtran。但是还有一些鲜为人知的方法,比如即将介绍的“8像素格优化方法”,它的原理是基于图像数据存储的格式上的。
8像素格
众所周知,jpeg图像存储是以8像素格为基本单位的,看下图示例:
32×32 pixels, Quality: 10 (in Photoshop), 396 bytes.
两个白色块大小均为8×8像素,图像保存质量为低。可以看出,左上角的方块很清晰,右下角却出现了杂色,这是为什么呢?让我们放大图片并画出参考线格:
可以看出,左上角的方块恰好在8×8格子里面(占据4个),而右下角的却横跨了9个格子,除了中间部分占满一个格子外,周围8个都只占据一部分。
由于jpeg存储算法中,每8×8个像素格是单独进行优化的,算法会寻找这个基本单位格中的均色(jpeg是以颜色正弦波编码)。因此,图像处理时应该尽可能考虑到这点,使得元素的位置靠近每个8×8的像素格。
这个方法使用起来很简单,比如下面这个例子:
13.51 KB
12.65 KB
第一张图片中,微波炉的位置是随意放的,而第二张却经过了细微的调整。两者存储的质量相同,都是55。让我们放大点看,红线是参考线:
可以看到,在略微移动了几个像素之后,图像减少了大约1 KB,并且也更清晰了一点。
颜色优化
这部分主要介绍不常用的图片存储格式,它主要应用在电视上面,暂不介绍。
常见的JPEG优化方法
这里介绍一些常用的优化方法。
JPEG算法很严格,唯一的压缩准则是图像软件设置里的质量选项。你可能在Photoshop中存质量为55~60的图片,但是在其它软件中存80质量才拥有同样的尺寸和外观。
一定不要用100的质量来保存图片!这其实并不是最高的质量值,因为这只是个数学理论上限,如果你非要质量很高的图片的话,一般存到95就够了,5点的质量丢失几乎没有区别。
注意Photoshop中低于50质量的图片保存。因为在50之下的时候,jpeg优化会启动一个附加的算法——color down-sampling——它将均衡相邻的8×8像素格的颜色。
48×48 pixels, Quality: 50…

本博客所有文章均采用