網站首頁 編程語言 正文
【c++開發】C++ Linux Ubuntu imagemagick以及magick++安裝;c++調用magick++庫;找不到Magick++.h
作者:別出BUG求求了 更新時間: 2023-11-14 編程語言ubuntu系統自帶的imagemagick沒有c++函數庫,需要能重新下載一個新一點的庫,重新編譯并且安裝
一、教程
官網詳細教程:https://imagemagick.org/script/install-source.php
- 源碼編譯:
下載:
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
二、問題排查
- 找不到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
- 報錯找不到/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/
- 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
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-10-18 AJAX淺析數據交換的實現_AJAX相關
- 2023-02-09 Golang實現Trie(前綴樹)的示例_Golang
- 2022-10-25 c++標準模板庫:STL
- 2024-02-25 前后端的時間問題
- 2022-08-28 C#中類的使用教程詳解_C#教程
- 2022-05-24 詳解利用Flutter中的Canvas繪制有趣的圖形_Android
- 2022-05-01 Python的裝飾器詳情介紹_python
- 2023-02-12 Python取出字典中的值的實現_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支