ImageMagick 是功能強大的圖片處理套件,支援超過 200 種格式,提供 convert、mogrify、composite 等指令列工具,並可透過 PHP Imagick 擴充套件或 exec() 呼叫。本文記錄在 Linux 環境下從原始碼編譯安裝 ImageMagick 及其相依庫(jpeg、png 等)的完整步驟與常見問題排解。
cd ~/Downloads wget https://www.imagemagick.org/download/ImageMagick-6.8.5-10.tar.gz tar xzvf ImageMagick-6.8.5-10.tar.gz
ImageMagick 需要 libjpeg、libpng、freetype、libtiff 等庫。以 jpeg-9 為例:
wget https://www.imagemagick.org/download/delegates/jpegsrc.v9.tar.gz gunzip jpegsrc.v9.tar.gz tar -xvf jpegsrc.v9.tar cd jpeg-9 ./configure --prefix=/usr/local make make test make install
同理安裝 libpng、freetype、libtiff,建議統一 --prefix=/usr/local 方便管理。
cd ImageMagick-6.8.5-10 ./configure --prefix=/usr/local --with-jpeg=/usr/local --with-png=/usr/local --with-freetype=/usr/local make make install
關鍵參數說明:
--with-jpeg=/usr/local 指定 jpeg 库路徑,避免找不到標頭檔/庫檔。--with-webp 等參數。convert -version # 輸出應包含 Version: ImageMagick 6.8.5-10 ...
執行 convert 時若出現:
convert: error while loading shared libraries: libMagickCore.so.5: cannot open shared object file: No such file or directory
原因:動態連結器找不到 /usr/local/lib 下的庫檔。解決方法:
echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig -v
再次執行 convert -version 即正常。
pecl install imagick,並在 php.ini 加入 extension=imagick.so。PicThumb 類別採用)php.ini 未禁用 exec,且 Apache/PHP-FPM 使用者有執行 convert 權限。安裝完成後,即可在 PHP 專案中充分發揮 ImageMagick 的圖片處理能力。詳細編譯參數請參考官方文件 ./configure --help。