CentOSでPHPのImagickを試す機会がありましたので、構築手順をメモしておきます。
環境
- CentOS 7.8
- PHP 7.3
- ImageMagick 7.0.10
手順
EPELリポジトリの追加
# yum install -y epel-release
ImageMagickのインストール
yum install ImageMagick
だと古いバージョンがインストールされます。新しいバージョンを使用するため、rpmを使用してインストールします。配布先はコチラで確認できます。
# yum install -y https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-libs-7.0.10-14.x86_64.rpm
# yum install -y https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-7.0.10-14.x86_64.rpm
# yum install -y https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-devel-7.0.10-14.x86_64.rpm
インストールできたら、バージョンを確認しておきます。
$ convert --version
Version: ImageMagick 7.0.10-14 Q16 x86_64 2020-05-23 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(3.1)
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib jng jp2 jpeg lcms ltdl lzma openexr pangocairo png ps raqm rsvg tiff webp wmf x xml zlib
remiリポジトリの追加
# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHPのインストール
# yum install -y --enablerepo=remi,remi-php73 php php-devel php-pear
本体がインストールできたら、PECLでimagick
拡張をインストールします。が、その前に念のためバージョン確認しておきます。
$ php -v
PHP 7.3.18 (cli) (built: May 12 2020 08:04:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.18, Copyright (c) 1998-2018 Zend Technologies
# pecl version
PEAR Version: 1.10.12
PHP Version: 7.3.18
Zend Engine Version: 3.3.18
Running on: Linux tdomy-test.mshome.net 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64
PHPとPECLのバージョンが7.3.18
で一致しているので問題ありません。拡張をインストールしていきます。
# pecl install imagick
# echo extension=imagick.so > /etc/php.d/20-imagick.ini
php -m
でモジュールを確認して、imagickがあればOKです!
サンプルスクリプト
試しに画像のExif情報を削除するスクリプトを用意しました。
<?php
$path = './cmyk.jpg';
$outpath = './output.jpg';
$img = new \Imagick($path);
$profiles = $img->getImageProfiles("*", true); // 全プロパティ取得
print_r(array_keys($profiles));
$img->stripImage();
$img->profileImage("icc", $profiles['icc']); // iccは残す
$img->writeImage($outpath);
$outimg = new \Imagick($outpath);
print_r(array_keys($outimg->getImageProfiles("*", true)));
実行結果
Array
(
[0] => exif
[1] => icc
)
Array
(
[0] => icc
)
元画像と処理後を比較するとExifが消えているのがわかると思います。

