ImageMagick是一款免費、開源、跨平台的圖像處理工具,可以進行圖像的縮放、翻轉、鏡射、變形、調整顏色等,也可以寫字、畫圖,從過去到現在的圖像格式它幾乎都能夠支援。ImageMagick也有很不錯的可攜性和可移植性,可以使用在Linux, macOS, Microsoft Windows等多種不同的作業系統和多種硬體架構上。



要在Ubuntu作業系統上使用ImageMagick的話,可以直接用apt install imagemagick指令來安裝ImageMagick套件。用這樣的方式安裝ImageMagick雖然簡單,版本卻通常會比較舊,且並沒有啟用所有功能。您可能會遇到在某個地方抄到某個ImageMagick指令,在自己的電腦上使用卻無法支援的問題。

ubuntu-imagemagick

ImageMagick的官方網站:

自行編譯 ImageMagick

為了能夠使用到更新的ImageMagick的版本,享用更強大的功能。還是要自行編譯ImageMagick才行。

您可能會想問,難道就不能夠到網路上尋找別人已經編譯好的新版的ImageMagick來用嗎?其實可以,但通常被直接提供的已編譯好的執行檔並不會開啟被授權限制的功能。

要編譯ImageMagick,要先到ImageMagick的官方網站取得ImageMagick的原始碼。編譯ImageMagick會需要搭配許多其它的函式庫,設定過程十分繁瑣,所以筆者開了一個GitHub專案,可以在Docker內的Ubuntu環境中編譯出具有完整功能的ImageMagick執行檔。GitHub倉庫的網址如下:

用這個專案所編譯的ImageMagick執行檔,函式庫是以動態連結為主。如果該函式庫有在Ubuntu官方的軟體源中,就會使用官方軟體源的共享函式庫。至於一些Ubuntu官方的軟體源並未提供但也很有用的函式庫,則採取下載原始碼並編譯出靜態函式庫的方式處理。

要使用這個專案來編譯ImageMagick,您會需要安裝Docker,可以參考以下這篇文章來安裝:

接著用以下指令下載這個專案:

git clone --depth 1 https://github.com/magiclen/ubuntu-ffimagemagick

在專案目錄中執行如下的指令來編譯符合您Ubuntu作業系統版本的ImageMagick。

docker build -t imagemagick-build -f Dockerfile.<ubuntu_name> .

以上指令中,<ubuntu_name>可以填入Jammy(即Ubuntu 22.04)。在執行這個指令之前,您可以先打開該Dockerfile看看裡面所使用的ImageMagick或是其它函式庫的版本是不是您想要的,不是的話可以自行按照同樣的方式修改。

如果成功建置出Docker image,則再執行以下指令來取得編譯好的ImageMagick執行檔。

docker run -v "$(pwd)/output":/output --name imagemagick-build imagemagick-build

以上指令執行完後,ImageMagick的執行檔應該就會出現在專案根目錄中的output目錄下。

在編譯過程中會產生一些Docker image,可以用以下指令來清理:

docker rm imagemagick-build && docker image rm imagemagick-build && docker image prune

如果您直接在Ubuntu環境執行這些ImageMagick執行檔,很可能會發生如下圖的缺少動態函式庫的問題。使用ldd指令查看可以看到缺少哪些動態函式庫。

ubuntu-imagemagick

筆者會建議您去Dockerfile裡面尋找「Runtime Environment」這個階段的apt install指令,將其複製出來使用。這個指令可以用來安裝ImageMagick執行檔所需的動態函式庫。

ubuntu-imagemagick

動態函式庫裝齊了,就可以正確執行ImageMagick執行檔了!

ubuntu-imagemagick