【发布时间】:2012-08-02 17:35:20
【问题描述】:
我一直在寻找用于 C++ 的简单、小巧但健壮且快速(不全面!)的图像库(如果没有可用的 C++ 版本,C 就足够了)。
我正在寻找的主要功能是:
- 免费(开源是加分项)
- 为速度而生
- 没有巨大的功能膨胀(例如
ImageMagik,它确实很全面,但却是个庞然大物) - 很小的内存占用
- 仅支持加载/保存、调整大小、格式转换等功能的绝对最小值。没什么特别的
- “损坏”文件的错误恢复(不像
stb_image.c,它的错误恢复很差) - MSVC 和 gcc 友好(我使用
CxImage很多年了,但在最新版本中,我遇到了 MSVC 2010 的问题,而且似乎对它的积极开发和支持现在已经消失了,所以我我要放弃了) - 应支持流行的现代格式,如 JPEG2000,直接或通过使用通用库如
libpng - 不管它是 DirectX 还是 OpenGL,因为我不打算用它来显示图像 - 只是为了对网站进行文件处理
- 同时支持静态和动态链接是一个加分项
- 线程支持是一大优势
出于某种原因我查看并关闭的库:
- CxImage(不再积极开发)
- ImageMagik - 太大(太慢)
- stb_image.c - 错误处理错误,不支持足够的图像格式
- DevIL(还没有被解雇,但也没有看太多 - 几分钟前刚刚在 SO 上的类似帖子中了解到它) - 基于它的大小和功能集,它看起来很有希望不过我需要
- FreeImage(与 DevIL 相同 - 稍后会查看它,但它的大小对我来说有点大)
- 土壤(与 stb_image.c 相同)
- TimThumb - 它是 PHP,而不是 C/C++
简而言之,我只想要尽可能小和尽可能快的东西,代价是只拥有绝对最低限度的功能,但到目前为止我还没有找到合适的候选人。
请问这个社区有什么建议吗?但请记住我上面列出的限制——我认为抛出“你试过 X 吗?”形式的答案是不行的。其中“X”不能满足我一半的需求:)
编辑:深入研究 DevIL,它似乎是我所需要的。它轻巧、小巧、坚固。现在我只需要确保它执行。 哦,还有 CImage(我忘了在列表中提到它)——不喜欢它的性能(尽管我不得不承认,仅模板实现的想法很可爱,至少可以这么说)
【问题讨论】:
-
CxImage 由那里的开发人员为 XBMC 维护,它可能是你想要的。
-
它必须是开源的还是跨平台的?你的目标平台是什么?
-
我的目标平台既是与工作相关的项目,也是我的个人项目,所以范围是 Windows + Linux(可能有一天是 iOS)。到目前为止,仅限桌面,主要是在 web 服务器的上下文中(IIS,阿帕奇)
标签: c++ c performance image open-source