我试图让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 编译器。即使构建成功,也会生成库
libjpeg.a
在Visual Studio解决方案中不可链接。错误消息:
状态错误LNK2019未解析的函数_output_message中引用的外部符号__imp___iob
另一个生成的库 libjpeg.dll.a 在加载.jpg文件时会引发错误 CImg Exception (picture)
经过几次重建后,问题仍然存在。
我也尝试使用VC编译器,但是我找不到调用构建comand nmake -f makefile.vc setup-v10
时所需的 win32.mak 文件。此文件的非官方下载无法在我的电脑上正常运行。无法在Visual Studio中打开生成的解决方案。
是否有一些解决方法 - 如果没有解决方案?
答案 0 :(得分:2)
如果您想使用 CImg 读取/写入JPEG图像,您有几种选择:
您可以安装我已经详细介绍的libjpeg
here。如果您使用此选项,则必须使用:
#define cimg_use_jpeg
和 CImg 将编译并链接libjpeg
并读取和写入JPEG图像。您需要编译并安装libjpeg
才能使用此选项。
您可以安装 ImageMagick , CImg 可以委托读取和写入。如果选择此路线,请务必在安装 ImageMagick 期间勾选名为“安装旧版命令”或类似的框。此选项使您能够读取和写入除JPEG以外的其他200种图像格式。它对于生成测试图像和尝试算法非常有用,无需编写任何C ++代码。主要的缺点是它的分布很大。
如果您想使用此选项,则不得#define cimg_use_jpeg
或#define cimg_use_magick
。 CImg 将在运行时和 ImageMagick 中查找 ImageMagick 的convert.exe
或magick.exe
不会为您的 Visual Studio 项目所知或参与其中。你可以打电话:
imagemagick_path()
在运行时告知 CImg 您已安装 ImageMagick 的convert.exe
或magick.exe
。如果您使用此选项,则应在保存图片时使用通用save()
方法,而不是save_jpeg()
或save_png()
。
到目前为止,这是最简单的选择。
如果要使用此选项,则必须执行以下操作:
#define cimg_use_magick
然后 CImg 将编译并链接 Magick ++ - ImageMagick 的C ++界面。这将要求您安装 Magick ++ 的源代码,这可能是最难实现的选项。
根据您的目标,您可以设想安装更简单,更轻量级的 NetPBM 工具,并将图片转换为PBM/PGM/PPM
格式,因为 CImg 可以原生读取和写入那些没有任何外部库的文件。
可以想象,在加载图片时,您可以使用C ++的system()
动态执行此操作。