轻量级 C++ 图像库 [关闭]
Posted
技术标签:
【中文标题】轻量级 C++ 图像库 [关闭]【英文标题】:light-weight C++ image library [closed] 【发布时间】: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,阿帕奇) ***.com/questions/50079/c-image-library 【参考方案1】:我强烈建议您围绕libpng 和jpeglib(以及您需要支持的格式的所有其他低级库)编写一个小库。这并不难,您可以编写所需的所有功能。
作为替代方案,您可以使用该库已经存在的一些优秀的 c++ 包装器。下面是一些例子:
png++ JPEGReader/JPEGWriter【讨论】:
看来这就是我要走的路,毕竟:)【参考方案2】:看看CImg库,它只是一个单独的头文件
【讨论】:
我对内存占用及其性能不满意 它简单轻巧,但我很确定这个库偶尔会导致内存分段错误。 漂亮确定吗?任何人都可以确认或否认这一点吗?我正在考虑在我的项目中使用它。 @Octopus 正在检查回复,因为回复您的人没有正确突出您。我知道已经 5 年了,您可能没有答案,但您所说的是对图书馆的非常严重的索赔,因为像我这样的人非常强烈地反对使用“segfaults”的图书馆。 我已经使用了一段时间,我很惊讶它的 IO 似乎非常慢,无论如何对于 PNG 文件。我没有仔细研究细节,但出于某种原因,保存一个 1080 x 1920 PNG 文件大约需要 5 秒。哦,顺便说一句,我有一个绝对的机器怪物(Windows 10)。以上是关于轻量级 C++ 图像库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章