png图片文件的数据结构
PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同
时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG
)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。P
NG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,
并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法。
一、数据结构
1.PNG数据块
PNG定义了两种类型的数据块,一种是称为关键数据块,这是标准的数据块,另一种叫做辅助数据
块,这是可选的数据块。关键数据块定义了5个标准数据块,每个PNG文件都必须包含它们,PNG读写软
件也必须要支持这些数据块。至于可选数据块,规范只是提倡予以支持。
下表就是PNG中数据块的类别,其中 * 号表示关键数据块:
----------------------------------------------------------------
数据块符号 数据块名称 多数据块 可选否 位置限制
----------------------------------------------------------------
* PNG文件标识 否 第一块
IHDR * 文件头数据块 否 否 第二块
cHRM 基色和白色点数据块 否 是 在PLTE和IDAT之前
gAMA 图像γ数据块 否 是 在PLTE和IDAT之前
sBIT 样本有效位数据块 否 是 在PLTE和IDAT之前
PLTE* 调色板数据块 否 是 在IDAT之前
bKGD 背景颜色数据块 否 是 在PLTE之后IDAT之前
hIST 图像直方图数据块 否 是 在PLTE之后IDAT之前
tRNS 图像透明数据块 否 是 在PLTE之后IDAT之前
oFFs (专用公共数据块) 否 是 在IDAT之前
pHYs 物理像素尺寸数据块 否 是 在IDAT之前
sCAL (专用公共数据块) 否 是 在IDAT之前
IDAT * 图像数据块 是 否 与其他IDAT连续
tIME 图像最后修改时间 否 是 无限制
tEXt 文本信息数据块 是 是 无限制
zTXt 压缩文本数据块 是 是 无限制
fRAc (专用公共数据块) 是 是 无限制
gIFg (专用公共数据块) 是 是 无限制
gIFt (专用公共数据块) 是 是 无