我一直在寻找一个简单、小巧但健壮且快速(不全面!)的 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(我忘了在列表中提到它)——不喜欢它的性能(尽管我不得不承认,仅模板实现的想法很可爱,至少可以这么说)