Edit online

PNG 文件结构说明

3 Mar 2025
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