从流中确定 PNG 的文件大小

Determine the file size of PNG from stream

我遇到了一个数据库格式不明确的文件,想从中恢复一些信息。在使用 python 以字节形式打开和读取文件,并使用 re.searchb"\x89\x50\x4e\x47" 模式(PNG 文件 header)后,我在文件中找到了一个匹配的偏移量这个。经过进一步检查,这很可能是实际 PNG 文件的起始位置(十六进制的前 16 个字节是 89504e470d0a1a0a0000000d49484452)。但是,没有关于此 PNG 文件大小的信息,我应该如何以编程方式确定它(使用 header 中的信息)?如果可以使用一些现有的PNG调试工具,我们将不胜感激。

我已经尝试从该偏移量开始输出此数据库文件的其余部分并将其另存为 PNG,但它不起作用,因为我的图像查看器报告文件已损坏。

PNG 图像具有页脚,您可以利用这些页脚来确定何时停止。

您可以一直查找到IEND,然后向右移动4个字节以捕获CRC数据,并提取到该点的所有字节。

之后,您应该可以获得完整的 PNG 文件。