簡體   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