多IDAT段的PNG文件格式是怎样的?
现需要生成一无压缩的png文件。
在网上找到一文:《PNG文件结构分析之二(在手机上生成PNG文件)》(可在google搜到)
其中对于IDAT chunk中的无压缩的LZ77压缩块格式不太清楚,
字节 意义
0~2 压缩信息,固定为0x78, 0xda, 0x1
3~6 压缩块的LEN和NLEN信息
压缩的数据
最后4字节 Adler32信息
对于其中固定为0x78, 0xda, 0x1是什么意思?是否在所有场合都是固定的?
NLEN是LEN的补码,LEN和NLEN各占两字节,所以LEN最大值是64K。
我已按这个格式正确生成了png文件,用常用的看图软件能正常显示,但只能是64k以下,因为上面的LEN的限制。
查阅其他资料可知,PNG文件可以有多个IDAT chunk, 但如何组织多个IDAT构成PNG文件则没有详细说明。
作了如下实验,生成的文件用看图软件打开时提示有错。
一个50行50列像素的图,分为连续的两个IDAT存数据,第一个存25行50列(即图像的上半截),另一个IDAT存25行50列(即图像的下半截)。每个IDAT CHUNK的无压缩的LZ77压缩块都以0x78, 0xda, 0x1开头,然后是LEN、NLEN,然后是数据,然后是Adler32信息。
请问错在哪里?谁知道如何建立多IDAT的PNG文件?