PNG:php
便携式网络图形(Portable Network Graphics,PNG)是一种无损压缩的位图图形格式,支持索引、灰度、RGB三种颜色方案以及Alpha通道等特性。PNG的开发目标是改善并替换GIF做为适合网络传输的格式而不需专利许可,因此被普遍应用于互联网及其余方面上。算法
PNG另外一个非正式的名称来源为递归缩写:“PNG is Not GIF”。网络
因为PNG是无损压缩,那也就意味着他能够从新精确的改造原图片(1.过滤,2.压缩)。编码
1.过滤(Filtering)spa
差分编码:又叫增量编码,差分编码的简单例子是储存序列式资料之间的差别(而不是储存资料自己):不存“2,3,4,5,6,7,8”,而是存“2,1,1,1,1,1,1”。orm
[2,3,4,5,6,7,8] can become [2,1,1,1,1,1,1], where递归
[2, 3–2=1, 4–3=1, 5–4=1, 6–5=1, 7–6=1, 8–7=1]索引
单独使用用处不大,可是在序列式数值常出现时能够帮助压缩资料。因为改变一般很小(平均占所有大小的2%),差分编码能大幅减小资料的重复。一连串独特的delta档案在空间上要比未编码的相等档案有效率多了。Windows中的差分压缩也是利用这种编码方式图片
PNG图片存储用的也是差分编码便是Filtering。ip
2.压缩
主要用到LZ77压缩算法。
参考:https://medium.com/@duhroach/how-png-works-f1174e3cc7b7
关于PNG的格式:
若是不用透明(alpha),RGBA 32bpp选项会浪费图片大小的 ¼,能够用24bpp truecolor format (or just use JPG).固然,若是图片包含灰图模式的数据,你应该只用8bpp.存储。总之,像素存储格式,选择须要用心呀。
INDEXED format.
INDEXED color mode, basically chooses the best 256 colors to use, and replaces all your pixels with an index into that color palette. The result, is a reduction from 16 million colors (24bpp) to 256, which is a significant savings.
参考:https://medium.com/@duhroach/reducing-png-file-size-8473480d0476#.ut4mvxkcv