易于使用的PNG库

Easy to use PNG lib?

本文关键字:PNG 易于使      更新时间:2023-10-16

有人能为我推荐一个简单易用的用于c++或.NET的PNG库吗?它所需要做的就是:加载大的PNG图像(比如20000x20000),并告诉我每个像素的颜色。

.NET中的Bitmap类无法加载大图像,引发OutOfMemory异常。

我在谷歌上花了相当长的时间浏览c++库,但它们都比我需要的要多得多,而且它们的使用对我来说太复杂了。

PNG文件的实际标准库是LibPNG。它不是世界上设计最好的API,但如果你只是完成他们教程中的步骤,就很难搞砸。

您可能会发现用自己的几个简单函数(或类)包装API是最容易的。一旦你完成了这件事,你就应该做好出发的准备。

试试这个:

http://nothings.org/stb_image.c

您也可以使用它来代替zlib。

如果C#是一个选项,请尝试PNGCS。它是为这个场景完成的(最初是我自己用Java完成的),它允许您逐行读写,而不需要将所有数据都存储在内存中。

我已经测试过它可以读写巨大的文件(30000 x 30000像素,超过2GB的磁盘),至少在Java 中是这样

对于C++:

根据您可以使用的许可证,您可以查看:

德维尔:http://openil.sourceforge.net/(有点过时,但仍然是一个不错的选择)(Linux,Win)

ImageMagick:http://www.imagemagick.org/script/index.php(维护良好,所有平台)

两者都支持各种输入和输出格式。

编辑:现在也在Github上:https://github.com/DentonW/DevIL