C++图像编码/解码库

C++ image encode / decode library

本文关键字:解码 图像编码 C++      更新时间:2023-10-16

我正在开发一个用于图像处理的科学应用程序。它使用自己的简单数据类型来存储图像(像素数据、通道数等)。我需要的是能够读取常见格式(bmp,jpeg,png,也许是其他格式)的图像,转换为我的内部格式,然后在处理后将它们导出为一种常见格式。

我希望这个应用程序尽可能轻量级,所以我不想包含"繁重"的库,例如OpenCV或ImageMagick,只是为了这个目的。

是否有任何简单、轻巧和高效的 c++ 库仅用于编码和解码流行格式的图像?或者我唯一的选择是为每个格式使用单独的库,例如 libjpeg 和 libpng?

为了打开常见格式,有两种方法:分离的库或有时是操作系统(例如,您可以使用Windows API打开JPEG)。

使用ImageMagick/OpenCV没有问题...它们很轻!即使您考虑使用单独的库更轻,您也必须实现一种通用的位图格式,以便从每个库的输出中获取数据(相信我,这里有技巧:通道数、通道顺序、像素顺序 [从左上到右下]等)......嗯,很多工作!

那么,为什么不使用已经实现的东西,比如ImageMagick/OpenCV?所有这些工作都已经完成!我真的相信这是一个非常好的选择!

使用 FreeImage。

FreeImage 是一个开源库项目,面向希望支持流行的图形图像格式(如 PNG、BMP、JPEG、TIFF 等)的开发人员,以满足当今多媒体应用程序的需要。FreeImage 易于使用、快速、多线程安全、兼容所有 32 位或 64 位版本的 Windows,并且跨平台(适用于 Linux 和 Mac OS X)。

下载:http://freeimage.sourceforge.net/