图片及压缩优化相关知识梳理(一)
图像
真彩图像:每个像素由R、G、B三个分量表示,每个通道取值范围0~255。数据类型一般为8位无符号整形。
灰度图像:每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度。
二值图像(黑白图像):每个像素点只有两种可能,0和1.0代表黑色,1代表白色。数据类型通常为1个二进制位。
索引图像:类似于查字典,为了解决彩色图像消耗空间大的问题,一般应用于色彩构成比较简单的场景。
矢量图
无限放大不失真
位图
不能无限放大,放大会失真
色值多,逼真
图片,canvas
透明度
alpha 透明
索引色透明
不透明
alpha通道
阿尔法通道是一个8位的灰度通道,该通道用256及灰度来记录图当中的透明度信息,定义透明、不透明和半透明区域,其中白表示不透明,黑色表示透明,灰度表示透明。
什么是PNG
PNG全称叫便携式网络图型(Portable Network Graphics
)是目前网络传输和页面展示中最常用的图片格式,首先它有几个主要特点:无损压缩
、体积小
和支持透明
。
PNG格式
bit 比特 表示信息的最小单位,是二进制数的一位包含的信息
PNG图片主要格式:PNG8
/ PNG24
/ PNG32
PNG8:8bit 2^8 256颜色种类
索引色透明只可以简单的指定一个像素点是不是透明(是或者不是),而 Alpha 透明则可指定该像素点的透明的程度(透明度),如30%的透明度。
PNG24:每8bit去表示R、G、B,不支持透明
色彩更丰富,2^24种颜色
ps导出的png24其实是png32
PNG32:多一个alpha通道,支持256级灰度透明
PNG图片文件存储结构
由文件头+各种各样的PNG数据块Chunk组成。
其中数据块分为两类:
关键数据块(必须)、辅助数据块
文件标志由8个字节数据组成: 89 50 4E 47 0D 0 A 1A 0A,其中50 4E 47对应的ASCII值是”PNG“
关键数据库由4部分组成:
文件头数据块 IHDR
调色板数据块 PLTE (根据图像的色深可选)
图像数据块 IDAT
辅助数据块一共有14个。
图像结束数据块 IEND
数据块格式:
字段名 | 大小(单位:字节) | 描述 |
---|---|---|
length | 4 | 指定数据块中的数据长度 |
chunk type code | 4 | 数据块类型,例如:IHDTR、PLTE等 |
chunk data | ~ | 存储数据 |
CRC | 4 | 循环冗余码 |
参考文献:
PNG文件存储格式定义
分析PNG数据结构
PNG的压缩
预解析 Prediction
Delta encoding
差分编码,对图片进行预处理
目的:尽可能将png图片的数据值转换成一组重复的、低的值,这样更容易压缩
压缩 Compression
DEFLATE是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。
PNG、JPG、GIF三种图片格式的区别
[分析链接](https://blog.csdn.net/minggeqingchun/article/details/78748550)