本篇简单梳理一下关于png格式图片的那些事。

一、简介

PNG图片是由很多个数据块组成的,每一个数据块代表不同的有关于图片的信息。除png头以外,每一个数据块都是按照数据长度+数据标识符+CRC校验码的结构来组织。如下图:

常见图片格式详解(四)---png_第1张图片

二、主要的PNG数据块

  1. PNG图片的头信息用8个字节来唯一标识图像的类型。

常见图片格式详解(四)---png_第2张图片

“89 50 4E 47 00 DA 1A 0A” 为png文件的标识符

2 在头标识之后,紧跟着的是叫做IHDR的数据段,包含了图像的高度,宽度,位深等相关信息。

常见图片格式详解(四)---png_第3张图片

3 IDAT是PNG中主要的压缩数据信息,其大概结构如图:
常见图片格式详解(四)---png_第4张图片

4 在文件结束的时候,有文件结束的标志,同样按照数据段的组织格式组织,不过数据长度为0 。

常见图片格式详解(四)---png_第5张图片

三、主要数据块的位置要求

不同的数据块,在PNG文件存储组织的时候有一定的位置和要求的限制,看下图就了然了。

常见图片格式详解(四)---png_第6张图片

结语

当然,PNG还有其他的一些数据段,不过万变不离其踪,其组织方式依然是类似的,只是不同操作系统、工具或者平台产生的PNG图片的组织格式可能不完全一样。只要抓住了最关键的IHDR, IDAT以及文件的开头和结束标识符,其他依此类推。