轻量级C ++图像库
我一直在寻找一个简单而小巧但又强大且快速( 不全面!)的C ++图像库(如果没有C ++版本,C就足够了)。
我正在寻找的主要function是:
- 免费(开源是一个加号)
- 专为速度而设计
- 没有巨大的function膨胀(像
ImageMagik
,这是真正全面但是是猛犸象) - 微小的内存占用
- 仅支持绝对最小的function,如加载/保存,resize,格式之间的转换。 没有什么花哨
- “损坏”文件的错误恢复(与
stb_image.c
不同,后者的错误恢复非常差) - MSVC和gcc友好(我使用
CxImage
多年,但最新版本我遇到了MSVC 2010的问题,看起来它的积极开发和支持已经消失了,所以我即将放弃它) - 应该支持流行的现代格式,如JPEG2000,直接或通过使用像
libpng
这样的通用库 - 不关心它是DirectX还是OpenGL,因为我不打算用它来显示图像 – 只是为网站进行文件处理
- 支持静态和动态链接是一个优点
- 线程支持是一个巨大的优势
由于某种原因,我查看和解雇的图书馆:
- CxImage(不再有活跃的开发)
- ImageMagik – 太大(而且很慢)
- stb_image.c – error handling错误,不支持足够的图像格式
- DevIL(还没有被解雇,但也没有看过很多 – 只是在几分钟之前在SO上的类似post中了解到它) – 基于它的大小和function设置它看起来非常有希望我需要的东西
- FreeImage(和DevIL一样 – 很快就会看一下它,但它的尺寸有点大我的口味)
- SOIL(与stb_image.c相同)
- TimThumb – 它是一个PHP,而不是一个C / C ++
简而言之,我只是希望尽可能小的东西尽可能快地牺牲仅仅具有绝对最小的function但我到目前为止还没找到合适的候选者。
请问这个社区有什么建议吗? 但请记住我上面列出的限制 – 我不认为抛出表格的答案“你试过X吗?” “X”不符合我需要的一半:)
编辑 :进一步了解DevIL似乎可能是我需要的东西。 它轻巧,小巧,坚固耐用。 现在我只需要确保它执行。 哦,和CImage(我忘了在列表中提到它) – 不喜欢它的性能(虽然我不得不承认只有模板实现的想法很可爱,至少可以说)
我强烈建议你围绕libpng和jpeglib (以及你需要支持的格式的所有其他低级库)编写一个小库。 它并不难,您可以编写所需的所有function。
作为替代方案,您可以使用已存在的一些优秀的c ++包装器。 这里有些例子:
- PNG ++
- JPEGReader / JPEGWriter
看看CImg库,它只是一个单独的头文件