PNG 文件解码流程
PNG 图像的解码流程分为以下几个部分,如图所示:

- 硬件实现:即上图中的虚线框部分。
- 软件实现:即图中虚线框外的 PNG parser 和 Read zlib Header。图中蓝色部分是 PNG 解码和 zlib 解码不一样的地方:
- 对于 zlib 解码:解码后,每一行都需要进行Defilter处理,恢复原始的像素。关于 zlib 解码的详细说明,可查看 zlib 解码和 gzip 解码流程。
- 对于 PNG 解码:PNG 图片的 deflate 数据可能存放在多个 IDAT 数据块中,硬件不支持解析
IDAT,所以需与软件配合才能完成解码。
- 软件解析所有 IDAT 数据,并把 IDAT 中的 deflate 数据拷贝到一块物理连续 buffer 中。
- 硬件读取该 buffer 中的 deflate 数据并完成解码。