2017-09-05 198 views
0

任何時候我嘗試加載圖像時出現錯誤,說CImg<unsigned char>::load(): Failed to recognize format of file。這發生在jpg和png文件中。無法使用CImg加載任何圖像

我發現其他職位有關這句話來定義cimg_use_pngcimg_use_jpeg,但後來我得到編譯errorstelling我,我需要png.njpeglib.h。不知道我應該從哪裏得到這些信息。

我不確定我哪裏出了問題,所以我不知道要問什麼。出了什麼問題?

+0

我沒有得到它的工作。我發現了libjpeg的預編譯版本,但是一旦我設置了原始錯誤(無法識別文件的格式)就回來了。最後我切換到了stb_image。 – Alex

+0

很抱歉聽到這個消息。你使用的是哪個版本的Windows?你是否使用Visual Studio - 如果是,哪個版本? –

+0

Windows 10和VS2017社區。我也使用默認的空C++解決方案。 – Alex

回答

2

如果要打開JPEG圖像,則需要安裝libjpeg並進行編譯和鏈接。

如果要打開PNG圖像,則需要安裝libpnglibz(用於壓縮),然後編譯並鏈接它們。

目前,您應該可以使用NetPBM格式的圖像 - 即PBM,PGM和PPM。


好了,經過嘗試2痛苦的日子制定出地球如何在的Visual Studio 2017年工作,以及如何安裝和集成libjpeg有了它,我現在就可以解釋瞭如何安裝CIMG和libjpeg的在Windows上。

步驟1

您需要安裝的Visual Studio 2017年,這意味着你需要的Windows 7 SP1的或更好。當安裝時,一定要包括的 「Windows SDK 8.1」

enter image description here

步驟2

下載libjpegIJG website。我拍了jpegsr9b.zip,因爲它是最新的。

enter image description here

步驟3

解壓縮文件並將其保存在你的home目錄名爲libjpeg目錄。

步驟4

轉到開始>所有程序>微軟的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的文件 - 歡呼!

步驟7

現在開始的Visual Studio 2017年,並打開剛纔創建的文件jpeg.sln和建設項目。它將在您的libjpeg目錄中創建一個Release目錄,在Release目錄內將會找到jpeg.lib。您現在已經安裝了libjpeg

enter image description here

步驟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.hGithub,並將其保存在你的home目錄名爲CImg目錄。

步驟10

現在告訴Visual Studio中,其中包括文件(CImglibjpeg)是和在庫文件(libjpeg)是:

enter image description here

第11步

現在告訴的Visual Studio 2017年要與libjpeg鏈接:

enter image description here

步驟12

現在你可以編譯,鏈接和運行CIMG程序和加載JPEG文件,並顯示它們屏幕上!

enter image description here


如果您正在使用cmake的Linux/MACOSthis answer顯示你的方式。


如果在命令行MACOS編譯,你需要有,如果你是在屏幕上顯示的圖像XQuartz安裝,你會想是這樣的:

g++ -std=c++11 sample.cpp -o sample -I /opt/X11/include -L /opt/X11/lib -lX11 -ljpeg -lpng -lz 
+0

我已經更新了我的答案,詳細介紹瞭如何在Windows中安裝和鏈接'libjpeg'。 –