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编译器。即使构建成功,生成的库libjpeg.a
在Visual Studio解决方案中不可链接。错误消息:
状态错误LNK2019未解析的外部符号__imp___iob在函数_output_message 中引用
另一个生成的库libjpeg.dll.a在加载.jpg文件时引发错误CImg异常(图片)
经过几次重建,这个问题仍然存在。我还尝试使用VC编译器,但找不到调用构建comand nmake -f makefile.vc setup-v10
时所需的win32.mak文件。该文件的非官方下载在我的电脑上无法正常工作。生成的解决方案无法在Visual Studio中打开。
如果没有解决方案,是否有一些变通方法?
如果您想用CImg读取/写入JPEG图像,您有几个选项:
选项1
您可以安装libjpeg
,我在这里已经详细介绍过了。如果您遵循此选项,则必须使用:
#define cimg_use_jpeg
CImg将针对libjpeg
进行编译和链接,并读取和写入JPEG图像。您需要编译并安装libjpeg
才能使用此选项。
选项2
您可以安装ImageMagick,CImg可以将读写委派给它。如果您选择此路径,请确保在安装ImageMagick期间勾选标题为"安装遗留命令">或类似的框。此选项使您能够读取和写入除JPEG之外的大约200种其他图像格式。它对于生成测试图像和尝试算法也非常有用,而无需编写任何C++代码。主要的缺点是它是一个相当大的分布。
如果要使用此选项,则不能使用#define cimg_use_jpeg
或#define cimg_use_magick
CImg将在运行时查找ImageMagick的convert.exe
或magick.exe
,并且ImageMagick不会为您的Visual Studio项目所知,也不会参与该项目。您可以拨打:
imagemagick_path()
在运行时告诉CImg您安装了ImageMagick的convert.exe
或magick.exe
的位置。如果使用此选项,则在保存图像时应使用通用的save()
方法,而不是save_jpeg()
或save_png()
。
到目前为止,这是最简单的选择。
选项3
如果你想使用这个选项,你必须做:
#define cimg_use_magick
然后CImg将编译并链接Magick++-到ImageMagick的C++接口。这将要求您安装Magick++的源代码,这可能是最难实现的选项。
根据您的目标,您可以安装更简单、重量更轻的NetPBM工具,并将图像转换为PBM/PGM/PPM
格式,因为CImg可以在根本没有任何外部库的情况下本地读取和写入这些图像。
可以想象,在加载图像时,可以使用C++的system()
动态地执行此操作。
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 如何使用CImg打开图像?
- 使用 CImg 库的 std::min 和 std::max 的编译问题
- C++ Xcode 9 - 无法从 Cimg 调用函数 display()
- CImg阅读图像
- 将 exr/pfm 保存到位图 CImg
- 无法在CLion(macOS)上打开带有CImg的.png文件
- 使用CImg和动态数组生成梯度
- 在 CImg 中实现动画循环的正确方法
- CImg.h 无法在 Xcode 环境中运行
- 在C++中使用 CImg 的未定义参考错误
- 如何将CImg函数与像素数据一起使用?
- CIMG显示全屏
- CImg与杰普利
- Xcode 上的 CImg 和 libtiff 的链接器错误
- 如何使用CIMG.H库在另一个图像上显示一个图像
- 如何将CIMG图像对象从C /CLI传递到C#
- 示例文件中的CImg图像加载错误
- 如何在 CImg 中更改显示规范化设置
- CIMG立方子像素位置