png的idat块
关于idat块的堆叠
位于文件尾部(接近iend块)的idat块位于图片的"底层",故此可以从头部开始逐一删除idat块,当数量恰当时,可以显示出位于"底层"的图像.(但是若多或少删一个idat块,则图片无法显示)
关于idat块长度
有些资料显示说idat块的长度上限为65536(即64kb),但这是错误的 事实上对于idat块的长度没有任何限制,idat的长度可以是任意的.
但是一张png图片在生成时似乎会根据某种方式计算出当前图片idat的长度,并以此为基准,超出长度的内容将被放入下一个idat块当中(有时第一块idat会略微超长或缺长,但从第二块开始将定长).读者可自习使用windows截图自习验证.一下为我在windows截图所得的png的数据块情形
以下为我自己瞎改的idat块大小
故此,如果出现两张png图片混杂在一个文件流中,可以通过不同大小的idat块区分,如下图,可根据idat长度分开两张图片

浙公网安备 33010602011771号