轻量级C++映像库
light-weight C++ image library
我一直在寻找一个简单、小巧但健壮、快速(不是全面!)的C++图像库(如果没有C++版本,C就足够了)。
我正在寻找的主要功能是:
- 免费(开源是一个优势)
- 专为速度打造
- 没有巨大的功能膨胀(像
ImageMagik
,它确实很全面,但却是一个庞大的) - 内存占用空间很小
- 仅支持绝对最小的功能,如加载/保存、调整大小、在格式之间转换。没什么好看的
- "损坏"文件的错误恢复(与
stb_image.c
不同,后者的错误恢复非常差) - MSVC和gcc友好(我使用
CxImage
很多年了,但在最新版本中,我在MSVC 2010中遇到了问题,现在对它的积极开发和支持似乎已经消失了,所以我要放弃它) - 应直接或通过使用
libpng
等通用库来支持流行的现代格式,如JPEG2000 - 不在乎它是DirectX还是OpenGL,因为我不打算用它来显示图像——只是为了给网站进行文件处理
- 同时支持静态和动态链接是一个优势
- 线程支持是一大优势
我看过的图书馆因为这样或那样的原因被解雇了:
- CxImage(不再进行主动开发)
- ImageMagik-太大(而且速度慢)
- stb_image.c-错误处理,不支持足够的图像格式
- DevIL(还没有被解雇,但也没有太多研究它——几分钟前刚刚在SO上的一篇类似帖子中了解到它)——根据它的大小和功能集,它看起来很有希望满足我的需求
- FreeImage(与DevIL相同-稍后会看一看,但根据我的口味,它的尺寸有点大)
- 土壤(与stb_image.c相同)
- TimThumb-它是一个PHP,而不是C/C++
简言之,我只想要尽可能小、尽可能快的东西,而牺牲的只是绝对最低限度的功能,但到目前为止,我还没有找到合适的候选人。
这个社区有什么建议吗?但请记住我上面列出的限制条件——我认为在"X"不能满足我一半需求的情况下,抛出一个"你尝试过X吗?"的答案是不可以的:)
编辑:深入了解DevIL,它似乎正是我所需要的。它轻盈、小巧、结实。现在我只需要确保它的性能。哦,还有CImage(我忘了在列表中提到它)-不喜欢它的性能(尽管我不得不承认,至少可以说,仅模板实现的想法很可爱)
我强烈建议您围绕libpng和jpeglib编写一个小库(以及您需要支持的格式的其他所有低级库)。它并没有那么难,您可以编写所需的所有功能。
作为一种替代方案,您可以使用一些已经存在的用于这些库的好的c++包装器。以下是一些例子:
- png++
- JPEGReader/JPEGWriter
看看CImg库,它只是一个单独的头文件
相关文章:
- SDL 映像:无法打开映像,仅显示错误消息
- C++ W:使用子线程的运行映像
- 从头开始为应用程序创建 docker 映像是否有意义?
- 主机箱/bash 未执行 docker 映像
- 无法从Java读取C++中保存的Opencv Mat映像
- CMake链接库在Docker映像中失败
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误
- 如何在C++中使用ZeroMQ通信多个映像
- 无法写入映像 SimpleElastix (Python)
- 如何在 windowsservercore Docker 映像上安装执行本机C++ DLL/EXE 所需的所有依赖二进制
- 无法将映像加载到 SDL2 程序
- 从 docker 映像构建中省略安装文件
- 使用 OpenGL 中的 imageStore 写入映像
- QML 映像不会在映像源中加载具有非 ASCII 字符的图像
- 警告在将 OpenCV 垫映像投射到 QImage 时使用旧式转换
- 在控制台上显示 BMP 映像时堆损坏
- 处理映像上的多个转换
- 我可以将带有依赖项的C++库作为 Docker 映像分发吗?
- 如何使用"trusty"映像在本地执行C++程序的Travis CI?
- 构建最终应用程序时,如何将HD映像从HD打包到.EXE文件中