4

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

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

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

4

4 回答 4

7

PNG 文件的事实上的标准库是LibPNG。它不是世界上设计最好的 API,但如果你只是按照他们的教程中的步骤进行操作,就很难搞砸了。

您可能会发现将他们的 API 包装在您自己的几个简单函数(或类)中是最容易的。一旦你完成了,你应该很高兴。

于 2013-02-22T13:06:21.840 回答
6

尝试这个:

http://nothings.org/stb_image.c

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

于 2013-02-22T13:08:12.723 回答
3

如果 C# 是一个选项,请尝试PNGCS。它是由我自己完成的,最初是在 Java 中完成的,它允许您逐行读取和写入,无需将所有数据都保存在内存中。

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

于 2013-02-22T14:14:32.110 回答
2

对于 C++:

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

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

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

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

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

于 2013-02-22T13:05:53.527 回答