PNG图片压缩原理解析

PNG图片压缩原理解析。转。作者 airuikun。

什么是 PNG ?

PNG 的全称叫便携式网络图型(Portable Network Graphics)是目前最流行的网络传输和展示的图片格式,原因有如下几点:

  • 无损压缩:PNG 图片采取了基于 LZ77 派生算法对文件进行压缩,使得它压缩比率更高,生成的文件体积更小,并且不损失数据。
  • 体积小:它利用特殊的编码方法标记重复出现的数据,使得同样格式的图片,PNG 图片文件的体积更小。网络通讯中因受带宽制约,在保证图片清晰、逼真的前提下,优先选择 PNG 格式的图片。
  • 支持透明效果:PNG 支持对原图像定义 256 个透明层次,使得图像的边缘能与任何背景平滑融合,这种功能是 GIF 和 JPEG 没有的。

PNG 类型

PNG 图片主要有三个类型,分别为 PNG 8 / PNG 24 / PNG 32。

PNG8:PNG 8中的8,其实指的是8bits,相当于用2^8(2的8次方)大小来存储一张图片的颜色种类,2^8等于256,也就是说PNG 8能存储256种颜色,一张图片如果颜色种类很少,将它设置成PNG 8得图片类型是非常适合的。

PNG24:PNG 24中的24,相当于3乘以8 等于 24,就是用三个8bits分别去表示 R(红)、G(绿)、B(蓝)。R(0255),G(0255),B(0~255),可以表达256乘以256乘以256=16777216种颜色的图片,这样PNG 24就能比PNG 8表示色彩更丰富的图片。但是所占用的空间相对就更大了。

PNG32:PNG 32中的32,相当于PNG 24 加上 8bits的透明颜色通道,就相当于R(红)、G(绿)、B(蓝)、A(透明)。R(0255),G(0255),B(0255),A(0255)。比PNG 24多了一个A(透明),也就是说PNG 32能表示跟PNG 24一样多的色彩,并且还支持256种透明的颜色,能表示更加丰富的图片颜色类型。

一类女神=PNG8:屌丝舔狗们见到第一类女神,顿时会觉得心情愉悦、笑逐颜开,屌丝发黑的印堂逐渐舒展,确认过眼神,是心动的感觉。

二类女神=PNG24:第二类女神开始厉害了,会给屌丝们一种菊花一紧、振聋发聩的心弦震撼,接触多了第二类女神能让屌丝每天精神抖擞,延年益寿。

三类女神=PNG32:在第三类女神面前,所有的语言都显得苍白无力。那是一种看了让屌丝上下通透、手眼通天的至尊级存在。超凡脱俗、天神下凡都不足以描摹她美色的二分之一。我曾经只有在梦里才见到过。

PNG 图片数据结构

PNG 图片的数据结构其实跟 http 请求的结构很像,都是一个数据头,后面跟着很多的数据块,如:

header -> chunk -> chunk -> chunk -> …

每一段十六进制编码就代表着一个特定的含义。

89504e470d0a1a0a:这个是 PNG 图片的头,所有的 PNG 图片的头都是这一串编码,图片软件通过这串编码判定这个文件是不是 PNG 格式的图片。

再 8 位是iHDR数据块的长度。

再 8 位是数据块的 type

再 8 位是图片的宽度

再 8 位是图片的高度

什么样的 PNG 图片更适合压缩

颜色越单一,颜色值越少,压缩率就越大

zhouyu1993 wechat
扫一扫上面的二维码,奇妙的世界等着你!
坚持技术分享,您的支持将鼓励我!