繁体   English   中英

使用jpeglib的CImg

[英]CImg with jpeglib

我正在尝试使CImg与Visual Sudio 2017和jpeg-9b一起使用,但由于某种原因,它无法使用。

码:

#define cimg_use_jpeg
#include "../CImg/CImg.h"
using namespace cimg_library;

#pragma comment(lib, "libjpeg.a")

CImg<unsigned char> image("../images/img.jpg"), visu(500, 400, 1, 3, 0);

第一步是构建库,在此之后,我描述了如何使用MinGW编译器。 即使构建成功,在Visual Studio解决方案中也无法链接生成的库libjpeg.a 错误信息:

状态错误LNK2019未解析的外部符号__imp___iob在函数_output_message中引用

加载.jpg文件CImg异常时,另一个生成的库libjpeg.dll.a引发错误(图片)

经过几次重建后,问题仍然存在。 我还尝试使用VC编译器,但是找不到调用build comand nmake -f makefile.vc setup-v10时所需的必需win32.mak文件。 该文件的非官方下载无法在我的电脑上正常工作。 无法在Visual Studio中打开生成的解决方案。

是否有一些解决方法-如果没有解决方案?

如果要使用CImg读取/写入JPEG图像,则有几种选择:

选项1

您可以安装libjpeg ,我已经在这里进行了详细介绍。 如果遵循此选项,则必须使用:

#define cimg_use_jpeg

CImg将针对libjpeg编译和链接,并读取和写入JPEG图像。 您将需要编译并安装libjpeg才能使用此选项。

选项2

您可以安装ImageMagickCImg可以委托对其进行读写。 如果选择此路线,请在安装ImageMagick的过程中确保选中标题为“ Install Legacy Commands”或类似名称的框。 使用此选项,您可以读取和写入JPEG以外的大约200种其他图像格式。 这对于生成测试图像和尝试算法而无需编写任何C ++也非常有用。 主要缺点是它的分布范围很大。

如果要使用此选项,则不得#define cimg_use_jpeg#define cimg_use_magick CImg在运行时 magick.exe ImageMagickconvert.exemagick.exe ,而ImageMagick将不会为您的Visual Studio项目所知,也不会参与其中。 您可以致电:

imagemagick_path()

在运行时告诉CImg您在哪里安装了ImageMagickconvert.exemagick.exe 如果使用此选项,则在保存图像时应使用通用的save()方法,而不是save_jpeg()save_png()

到目前为止,这是最简单的选择。

选项3

如果要使用此选项,则必须执行以下操作:

#define cimg_use_magick

然后CImg将编译并与Magick ++链接,这是ImageMagick的C ++接口。 这将需要您安装Magick ++的源代码,这可能是最难实现的选择。


根据您的目标,可以想到可以安装更简单,更轻便的NetPBM工具,并将图像转换为PBM/PGM/PPM格式,因为CImg可以原生读取和写入图像而无需任何外部库。

可以想象,可以在加载图像时使用C ++的system()动态地执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM