Edit online

PNG 文件结构说明

7 Jun 2024
Read time: 2 minute(s)


1. PNG 文件结构
如图所示,PNG 文件包括以下结构:
  • PNG 文件头
  • PNG 数据块:
    • 标准数据块
    • 辅助数据块
1. PNG 数据块说明
数据块符号 数据块名称 多数据块 是否可选 可获取的参数
IHDR 文件头数据块 PNG 图片的宽、高、位深、颜色类型、Interlace Method 等。关于 IHDR 的详细说明,可查看 IHDR 对 PNG 标注的支持说明
PLTE 调色板数据块 -
tRNS 图像透明数据块 -
IDAT 图像数据块 多数据块 Zlib 格式的压缩码流数据。
注: Zlib 压缩之前,可以采用 Filter 算法对原始数据进行处理,有助于提升压缩率。关于具体流程说明,可查看 Filter 算法说明
IEND 图像结束数据块 -

IHDR 对 PNG 标注的支持说明

IHDR 中可以获取到 PNG 图片的宽、高、位深、颜色类型和 Interlace Method 等参数。本模块对 PNG 标准的支持情况如下:

域名 标准定义 本模块是否支持
位深 索引彩色图像:1,2,4,8
灰度图像:1,2,4,8 或 16
真彩色图像:8 或者 16 支持 8 bits,不支持 16 bits
颜色格式 0:灰度图像,1,2,4,8 或 16
2:真彩色图像
3:索引彩色图像,1,2,4 或 8
4:带α通道数据的灰度图像,8 或 16
6:带α通道数据的真彩色图像,8 或 16 支持 8 bits,不支持 16 bits
扫描方式 0:非隔行扫描
1:Adam7

Filter 算法说明

PNG 图片的码流数据都在数据块 IDAT 中,IDAT 中是以 zlib 格式的压缩码流,在 zlib 压缩之前,可以采用 Filter 算法对原始数据进行处理,有助于提升压缩率。PNG 图像如下如所示,X 表示当前要进行 Filter 的像素,A 为当前像素左边像素,B 为当前像素上边像素,C 为当前像素左上边像素,则对 Fiter 的说明如下所示:



Filter 类型 函数 Filter 方式
0 保留原始数据
1 减去 A
2 减去 B
3 平均 根据 A 和 B 取平均,并向下取整
4 Paeth 使用最接近与 A + B - C 的 A、B 或者 C