每当我尝试加载图像时,我都会收到一个错误,说CImg<unsigned char>::load(): Failed to recognize format of file
。对于jpg和png文件都会发生这种情况。
我找到了关于这个说法的其他帖子来定义cimg_use_png
和cimg_use_jpeg
,但后来我得到汇编错误,告诉我我需要png.n
和jpeglib.h
。不知道我应该从哪里得到这些。
我不知道我哪里出错了,所以我不知道具体要问什么。出了什么问题?
如果你想打开JPEG
图像,你需要安装libjpeg
并编译和链接它。
如果你想打开PNG
图像,你需要安装libpng
和libz
(用于压缩)并编译和链接它们。
目前,您应该能够使用NetPBM格式图像 - 即PBM,PGM和PPM。
好吧,经过两天痛苦的日子试图弄清楚地球Visual Studio 2017如何工作,以及如何安装和集成libjpeg
,我现在可以解释如何在Windows上安装CImg和libjpeg。
步骤1
您需要安装Visual Studio 2017,这意味着您需要Windows 7 SP1或更高版本。安装时,请务必包含“Windows 8.1 SDK”
第2步
从libjpeg
下载IJG website。我拿了jpegsr9b.zip
,因为它是最新的。
第3步
解压缩文件并将其存储在HOME目录中名为libjpeg
的目录中。
第4步
转到开始>所有程序> Microsoft Visual Studio 2017> Visual Studio工具> VS2017的开发人员命令提示符
导航到刚刚解压缩的目录。这将是这样的:
cd libjpeg
cd jpeg-9b
第5步
现在您需要找到一个名为win32.mak
的文件。我在C:\Program Files\Microsoft SDKs\Windows\v7.0\Include
找到了我的。如果您使用Windows 8.1 SDK,则可能位于其他位置。无论如何,无论在哪里,您都需要将其包含的目录添加到您的包含。所以我做了:
set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v7.0\Include
第6步
现在运行nmake
来获取你的SLN - 一些奇怪的微软“解决方案”文件。命令是:
nmake -f makefile.vc setup-v10
你应该得到一个名为jpeg.sln
的文件 - hurray!
第7步
现在启动Visual Studio 2017,打开刚刚创建的jpeg.sln
文件并构建项目。它将在你的Release
目录中创建一个libjpeg
目录,在Release
目录中你会找到jpeg.lib
。你现在已经安装了libjpeg
。
第8步
关闭该项目,启动一个新的C ++命令行项目并编写基于CImg的程序。我写了最简单的:
#define cimg_use_jpeg
#include "CImg.h"
using namespace cimg_library;
int main() {
CImg<unsigned char> img("C:\\Users\\Mark\\test.jpg");
img.display("Image");
return 0;
}
第9步
从CImg.h
下载Github,并将其保存在HOME目录中名为CImg
的目录中。
第10步
现在告诉Visual Studio包含文件(对于CImg
和libjpeg
)的位置以及库文件(对于libjpeg
)的位置:
第11步
现在告诉Visual Studio 2017你想要与libjpeg
链接:
第12步
现在您可以编译,链接和运行CImg程序并加载JPEG文件并在屏幕上显示它们!
如果你在Linux / macOS上使用cmake
,this answer会指明你的方式。
如果您从命令行编译macOS,如果您在屏幕上显示图像,则需要安装XQuartz,并且您需要以下内容:
g++ -std=c++11 sample.cpp -o sample -I /opt/X11/include -L /opt/X11/lib -lX11 -ljpeg -lpng -lz
如果您希望CImg与jpeg或png图像一起使用,则需要提供适当的库。
这是一个如何将libjpeg安装到Visual Studio项目的教程。这基本上是对Mark Setchell的回答的2019年更新。
如何将libjpeg安装到您的项目中
使用右键单击粘贴。
jpeg.sln
(现已创建)。Project Properties -> C/C++ -> Additional Include Directories
和Project Properties -> Linker -> Additional Library Directories
jpeg.lib
添加到Project Properties -> Linker -> Input -> Additional Dependencies
x64/Release/jpeg.lib
复制到此文件夹。#define cimg_use_jpeg
之前添加#include "CImg.h"
在你的项目中