无损压缩 vs 有损压缩 vs 损多少

图像压缩是门古老技艺了。现如今,随着存储和网络带宽越来越便宜,目前用得也不多了。并且这个技术挺简单,也没什么好深讲的。那就随便聊聊呗。

无损压缩(PNG, GIF)的重压缩

除了常规方法,比如去掉或合并文件中的额外头信息外,对于PNG图像的话,有非常直观的方法可以略微多压一点点体积。比如说,PNG实际压缩算法就是我们平常打交道的zip(Deflate)。而zip的算法是可以调节压缩比例的。比例越大,压缩越好,但所需的压缩时间越长(不用担心,解压时间保持不变)。一般软件在生成PNG时,通常都不会把压缩比例全开。所以PNG的再压缩,其中一个思路就是用更好的的压缩算法重压一变。有一个很优秀的压缩软件叫7zip, 它的代码是公开的。利用7zip的算法处理后能贡献5~10%的文件体积减小。色彩笔PNG压缩率有时候能大幅突破这个比例,是利用除了改变压缩算法之外的其它技术。这部分和PNG的格式细节息息相关,会另写文章介绍。

对于动态GIF,如果两帧之间有重复内容,这部分是可以节约下来的。后一帧只存和前帧的差异部分。这部分的压缩比例因图而异。GIF也会另写GIF处理方法的文章介绍。

JPEG的重压缩

对于有损压缩JPEG来说,压缩比例越大,图像越模糊。JPEG就像一位素描画家,先画出人物的轮廓,再画出鼻子眼睛,再画出纹理阴影。压缩比例越大,丢失的步骤就越多,图像就越模糊。

JPEG重压缩也不能随便给个固定参数。这个参数需要因图而异。对于细节丰富的图,我们可以多压点,对于已经不剩多少细节的图,我们就要少压点或者不压。

因此,第一步,就是探知输入图像的质量(quality),看看其中有多少细节丰富度。最常见的方法就是把原图轻微模糊后再和原图比较差异度。差异度越高,说明原图像细节越丰富,图像的质量越高。

第二步,根据输入图像的质量,选择一个压缩参数,对原图减去合适的细节部分。


你可能感兴趣的:(无损压缩 vs 有损压缩 vs 损多少)