專案需處理大量圖片操作(縮圖、水印、格式轉換),GD 效能不足,改用 ImageMagick + imagick 擴展。本文記錄 LNMP 環境下從原始碼編譯安裝的完整流程,含踩坑解決方案。
# 下載最新版
wget ftp://ftp.u-aizu.ac.jp/pub/graphics/image/ImageMagick/imagemagick.org/ImageMagick.tar.gz
# 解壓進入
tar -xzvf ImageMagick.tar.gz
cd ImageMagick-6.8.6-5 # 版本號視下載檔名而定
# 配置、編譯、安裝
./configure --prefix=/usr/local/imagemagick
make
make install
# 下載 imagick
wget https://pecl.php.net/get/imagick-3.1.0b1.tgz
tar -xzvf imagick-3.1.0b1.tgz
cd imagick-3.1.0b1
# phpize 產生 configure
/usr/local/php/bin/phpize # 指定 phpize 路徑
# 配置:指定 php-config 與 ImageMagick 路徑
./configure --with-php-config=/usr/local/php/bin/php-config \
--with-imagick=/usr/local/imagemagick
make
make install
checking for MagickWand.h header file... configure: error: Cannot locate header file MagickWand.h
原因:ImageMagick 6.8+ 版本頭文件目錄變更為 ImageMagick-6。
解決:建立軟連結相容舊路徑:
ln -s /usr/local/include/ImageMagick-6 /usr/local/include/ImageMagick

通常缺少 pkgconfig、libtool、autoconf、automake 或開發套件。請執行:
yum install -y gcc gcc-c++ autoconf automake libtool pkgconfig \
ImageMagick-devel php-devel
再重新執行 ./configure ...。
編輯 php.ini 加入:
extension=imagick.so
重啟 PHP-FPM / Apache:
service php-fpm restart
# 或
service httpd restart
php -m | grep imagick
# 或建立 phpinfo 頁面確認 imagick 區塊
<?php
$im = new Imagick('test.jpg');
$im->thumbnailImage(200, 200);
$im->writeImage('test_thumb.jpg');
echo '縮圖成功!';
?>
ImageMagick 處理大量/大尺寸圖片時,CPU/記憶體效率顯著優於 GD,且支援格式更多(HEIC、WebP、TIFF 等)。生產環境建議啟用。