易于使用的PNG库
Easy to use PNG lib?
有人能为我推荐一个简单易用的用于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
相关文章:
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- std::vector的包装器,使数组的结构看起来像结构的数组
- 如何在全屏模式下(在OpenGL中)使背景透明
- 找到两对数字,使它们的乘积的绝对差最小化
- C++:如何使函数只返回作为列表一部分的字符串
- c++使用foreach使数组为null
- 使外部项目可用于find_package CMake
- 为什么<<低;和 cout<<v.begin;单独给出错误,但 cout <<(lower.begin());没有给出任何错误,并使代码易于编译
- 避免使用大量全局变量或使其易于访问和修改的最佳方法
- 如何使深渊中的对象易于配置"from the top"?
- 试图使C 类易于使用指针
- 如何使 c++ 修饰器模式更易于用于内存管理
- 使C++易于导入IDE
- 如何使我的项目易于设置
- 是否有 g++ 的标志可以使这些错误更易于阅读
- 试图使C++(MFC)代码片段易于重用.有什么选择
- 使背景的QLabel png图像透明的设计时间
- 如何使一个类型易于通过引用进行比较
- 易于使用的PNG库
- 如何使日志记录更易于维护