有人可以向我推荐一个简单、易于使用的用于 c++ 或 .NET 的 PNG 库吗?它需要做的就是:加载大 PNG 图像(比如 20000x20000),然后告诉我每个像素的颜色。
.NET 中的位图类无法加载大图像,引发 OutOfMemory 异常。
我花了合理的时间在谷歌上浏览 c++ 库,但它们都比我需要的要多得多,而且它们的使用对我来说太复杂了。
PNG 文件的事实上的标准库是LibPNG。它不是世界上设计最好的 API,但如果你只是按照他们的教程中的步骤进行操作,就很难搞砸了。
您可能会发现将他们的 API 包装在您自己的几个简单函数(或类)中是最容易的。一旦你完成了,你应该很高兴。
如果 C# 是一个选项,请尝试PNGCS。它是由我自己完成的,最初是在 Java 中完成的,它允许您逐行读取和写入,无需将所有数据都保存在内存中。
我已经测试过它可以读写大文件(30000 x 30000 像素,磁盘超过 2GB),至少在 Java 中
对于 C++:
根据您可以使用的许可证,您可以查看:
DeVIL:http ://openil.sourceforge.net/(有点过时但仍然是不错的选择)(Linux,Win)
ImageMagick:http ://www.imagemagick.org/script/index.php (维护良好,所有平台)
两者都支持多种输入和输出格式。
编辑:现在也在 Github 上:https ://github.com/DentonW/DevIL