如何将 zlib 流转换为 PNG?

How to convert a zlib stream to PNG?

本文关键字:PNG 转换 zlib      更新时间:2023-10-16

我已经有一个zlib编码的图像数据流(取自PDF/FlateDecode标签(。我还得到了以像素为单位的宽度和高度以及颜色深度(8 bpp(。数据打包为 RGB。 现在我想将其另存为 PNG 图像(我认为哪种默认压缩方法也是 ZLIB? 我尝试手动添加 PNG 标头和 IDAT 标头,但它不起作用。 有没有人知道,如何正确做到这一点?(利宾?

目标系统的 RAM 资源非常有限,因此解码 zlib 数据并使用 libpng 重新编码是不可能的。

您需要解压缩、重新格式化 PNG 的数据并重新压缩。在 PNG 文件中压缩的图像数据不仅仅是原始 RGB 数据。根据规范,图像的每一行前面都有一个过滤器字节,该字节指定该行如何与以前的数据区别(或不差异(。即使你不做差异,你也需要那个字节来表示。但是,使用其中一种过滤模式,您将获得更好的压缩。