36

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

4

2 回答 2

12

我强烈建议您围绕libpngjpeglib(以及您需要支持的格式的所有其他低级库)编写一个小库。这并不难,您可以编写所需的所有功能。

作为替代方案,您可以使用该库已经存在的一些好的 c++ 包装器。这里有些例子:

于 2012-08-05T14:59:14.587 回答
11

看看CImg库,它只是一个单独的头文件

于 2012-08-05T12:55:54.637 回答