如何将 zlib 流转换为 PNG?

How to convert a zlib stream to PNG?

我已经有一个 zlib-encoded 图像数据流(取自 PDF /FlateDecode 标签)。我还得到了以像素为单位的宽度和高度以及颜色深度 (8 bpp)。数据是打包的 RGB。 现在我想将其保存为 PNG 图像(我认为哪种默认压缩方法也是 ZLIB?)。 我尝试手动添加 PNG header 和 IDAT header,但没有成功。 有谁知道如何正确地做到这一点? (libpng ?)

目标系统的 RAM 资源非常有限,因此使用 libpng 解码 zlib 数据和 re-encoding 是关闭 table。

您需要解压缩数据,将数据重新格式化为 PNG,然后重新压缩。 PNG 文件中压缩的图像数据不仅仅是原始 RGB 数据。每 the specification,图像的每一行前面都有一个过滤器字节,它指定该行与以前的数据有何不同(或不同)。即使你不做差异,你也需要那个字节来说明。但是,您将使用其中一种过滤模式获得更好的压缩效果。