日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

【c++開發】C++ Linux Ubuntu imagemagick以及magick++安裝;c++調用magick++庫;找不到Magick++.h

作者:別出BUG求求了 更新時間: 2023-11-14 編程語言

ubuntu系統自帶的imagemagick沒有c++函數庫,需要能重新下載一個新一點的庫,重新編譯并且安裝

一、教程

官網詳細教程:https://imagemagick.org/script/install-source.php

  1. 源碼編譯:

下載:

git clone https://github.com/ImageMagick/ImageMagick.git ImageMagick-7.1.1

此時刪除原有的imagemagick

sudo apt-get remove imagemagick

進入目錄和安裝:

cd ImageMagick-7.1.1
./configure --with-magick-plus-plus
make
sudo make install

注意:

./configure 如果不帶–with-magick-plus-plus,只會安裝命令行之類的工具,不會安裝c++函數庫。

配置動態鏈接器運行時綁定:

sudo ldconfig /usr/local/lib

驗證:

/usr/local/bin/convert logo: logo.gif
convert -version

要進行更全面的測試,請運行ImageMagick驗證套件:

make check

在這里插入圖片描述

二、問題排查

  1. 找不到Magick++ API?

我在 Ubuntu 14.04 上,默認安裝了 ImageMagick 6.7.7-10。我需要在 C++ 項目中使用Magick++
,ImageMagick 的 C++ API,但我不知道它位于何處。我怎么知道我是否擁有它,如果我沒有,獲得它的最佳方式是什么?

需要安裝一些依賴:

sudo apt-get install graphicsmagick-libmagick-dev-compat

或者:

sudo apt-get install libgraphicsmagick1-dev

因為:

% apt-rdepends graphicsmagick-libmagick-dev-compat | grep magick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
graphicsmagick-libmagick-dev-compat
  Depends: libgraphics-magick-perl
  Depends: libgraphicsmagick++1-dev
  Depends: libgraphicsmagick1-dev
libgraphics-magick-perl
  Depends: libgraphicsmagick3 (>= 1.3.5)
libgraphicsmagick3
libgraphicsmagick++1-dev
  Depends: libgraphicsmagick++3 (= 1.3.20-4)
  Depends: libgraphicsmagick1-dev
libgraphicsmagick++3
  Depends: libgraphicsmagick3 (>= 1.3.15)
libgraphicsmagick1-dev
  Depends: libgraphicsmagick3 (= 1.3.20-4)

% apt-rdepends libgraphicsmagick1-dev | grep magick             
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libgraphicsmagick1-dev
  Depends: libgraphicsmagick3 (= 1.3.20-4)
libgraphicsmagick3
sudo apt-get install libmagick++-dev

此時再進行查找:

sudo apt-file find Magick++.h  

存在相關的:

/usr/include/ImageMagick/Magick++.h
  1. 報錯找不到/magick-baseconfig.h

[100%] Building CXX object cuneiform_src/cli/CMakeFiles/cuneiform-cli.dir/cuneiform-cli.cpp.o
In file included from /usr/include/ImageMagick-6/Magick++/Include.h:13:0,
from /usr/include/ImageMagick-6/Magick++.h:9,
from /tmp/cuneiform-linux-1.1.0/cuneiform_src/cli/cuneiform-cli.cpp:156:
/usr/include/ImageMagick-6/magick/magick-config.h:21:38: fatal error: magick/magick-baseconfig.h: No such file or directory
#include “magick/magick-baseconfig.h”
^
compilation terminated.

通過搜索標頭,發現它可以在不同的 ImageMagick 目錄中找到:

$ find /usr/include/ -name "*baseconfig*"
/usr/include/x86_64-linux-gnu/ImageMagick-6/magick/magick-baseconfig.h7

軟鏈接丟失的文件并沒有解決問題。

解決辦法:參考http://bazaar.launchpad.net/~jpakkane/cuneiform-linux/trunk/files
cuneiform_src/ 中的文件的時間戳 = 2010 或更早。難怪找不到新的 Debian 路徑。(未找到 magick/magick-baseconfig.h)。

簡單修復:

mkdir /usr/local/include/magick
cp /usr/include/x86_64-linux-gnu/ImageMagick-6/magick/magick-baseconfig.h /usr/local/include/magick/
  1. jpg文件無法識別
#include <Magick++.h>

using namespace Magick;

int main(int argc, char ** argv)
{
InitializeMagick(*argv);
Image image("100x100", "white");
image.pixelColor(49, 49, "red");
image.write("red_pixel.jpeg");
return 0;
}

編譯

g++ -O2 -o example.o  example.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`

報錯:

terminate called after throwing an instance of ‘Magick::Error Missing Delegate’ what(): img: no decode delegate for this image format `JPG’ @ error/constitute.c/ReadImage/746

terminate called after throwing an instance of
'Magick::ErrorMissingDelegate

類似的錯誤

問題原因:如果用convert xx.png xx.jpeg等指令也會報類似錯誤,原因是沒有png及jpeg的庫導致的。一些必要的依賴沒有安裝,必須根據此說明重新安裝帶有所有附加組件的 ImageMagick

sudo apt-get update 
sudo apt-get install build-essential 
sudo apt-get install libpng12-0 libpng12-dev
sudo apt-get install libjpeg62 libjpeg62-dev
sudo apt-get install -y libtiff-dev 

然后重新編譯安裝

重新安裝辦法快速見:

#These are the steps required in order to Install ImageMagick with JPG, PNG and TIFF delegates.

sudo apt-get update 

#Install Build-Essential in order to configure and make the final Install

sudo apt-get install build-essential 

#libjpg62-dev required in order to work with basic JPG files

sudo apt-get install -y libjpeg62-dev 

#libtiff-dev is required in order to work with TIFF file format

sudo apt-get install -y libtiff-dev 

#Download ImageMagick

wget https://www.imagemagick.org/download/ImageMagick.tar.gz 

#Untar Imagemagick

tar xvzf ImageMagick.tar.gz 

#Access the working directory

cd ImageMagick/[version_number] 

#Configure and make sure to disable the "shared" option

./configure --disable-shared

#Make

sudo make

#Install

sudo make install

#Final Check

sudo make check

原文鏈接:https://blog.csdn.net/weixin_39589455/article/details/129540032

  • 上一篇:沒有了
  • 下一篇:沒有了

相關推薦

欄目分類
最近更新