轻量级C ++图像库

时间:2012-08-05 12:50:40

标签: c++ c performance image open-source

我一直在寻找一个简单,小巧但强大且快速(全面!)的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一样 - 很快会看一下它,但它的尺寸有点大我的口味)
  • SOIL(与stb_image.c相同)
  • TimThumb - 这是一个PHP,而不是一个C / C ++

简而言之,我只想要尽可能小的东西,尽可能快地以牺牲绝对最低限度的功能为代价,但到目前为止我还没找到合适的候选人。

请问这个社区有什么建议吗?但请记住我上面列出的限制 - 我不认为抛出表格的答案“你试过X吗?” “X”不符合我需要的一半:)

编辑:进一步了解DevIL似乎可能就是我需要的东西。它轻巧,小巧,坚固耐用。现在我只需要确保它执行。 哦,和CImage(我忘了在列表中提到它) - 不喜欢它的性能(虽然我不得不承认只有模板实现的想法很可爱,至少可以说)

2 个答案:

答案 0 :(得分:10)

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

作为替代方案,您可以使用已存在的一些优秀的c ++包装器。以下是一些例子:

答案 1 :(得分:8)

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