我正在寻找一种将图像数据缓冲区保存为PNG文件的方法,以及将PNG文件读入缓冲区的方法。
我只想要做这两件事情。
这将是一个非常简单的包装器,使用png.h
。虽然由于可怕复杂的libpng API,它并不完全简单,但其概念是简单的。
我之前尝试了DevIL。它比libpng容易使用。但我遇到了问题。此外,DevIL功能太过强大。我只需要基本的、精简的PNG格式支持,而不是其他20种格式。
然后我发现了这个页面。我感谢Pixel Fairy和万能的Google给我提供了一个实现方式......然后结果是在处理后的图像中,每个扫描线中的第四个像素都会消失。我相当确定从阅读源代码来看,这不应该发生!它应该将红色清零,并将绿色设置为蓝色。这也没有发生。
我还尝试过png ++。 我遇到的问题是,我无法以兼容OpenGL加载的格式从PNG中获取数据,我必须构建另一个缓冲区。 它看起来很丑,但在我甚至考虑再次尝试DevIL之前,我肯定会再试一次png ++。 因为png ++ 起作用了,至少如此。 它还具有仅标头方面的优势。 不过,它确实产生了许多编译器警告。还有其他竞争者吗? 任何直接使用libpng的人都知道如何制作我所要求的内容:一个函数,它需要一个文件名并填充32 bpp缓冲区,并设置两个分辨率整数; 一个函数,它需要一个32 bpp缓冲区,两个分辨率整数和一个文件名。
更新编辑:我发现this。 可能有一些东西。