Help us understand the problem. What is going on with this article?

Vagrant(CentOS7)環境にImageMagick導入して画像変換

More than 1 year has passed since last update.

業務でImageMagick使ってTIFF変換することあったので、ざっくり環境構築から使い方までメモ書き。
ImageMagickはTIFFに限らず色んなフォーマットをサポートしてるっぽいので結構重宝するかも。

仮想環境構築に必要なものインストール

vagrantとVirtualBox導入
https://www.virtualbox.org/wiki/Downloads
https://www.vagrantup.com/downloads.html

仮想環境構築(CentOS7)

Vagrant初期設定に関して既に多くの方がQiita上に投稿されているので簡単な手順のみ記述。

CentOSのboxを拾って初期化。

//box追加
vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

//初期化
vagrant init centos7

作成されたVagrantfileの中身で以下ソースのコメントアウトを外す。

config.vm.network "private_network", ip: "192.168.33.10"

vagrant起動してsshでログイン出来るか確認。

//vagrant起動
vagrant up

//ユーザ・パスワードはvagrant
//接続可能なのは設定ファイルのconfig.vm.networkで設定したIPアドレス

CentOS環境を最新化してapacheやPHP導入

これはやらなくても良いのでやりたい人だけやる。

yum update

ただしyum updateを行った場合、再度vagrant起動時にエラー表示される。どうやらyum updateでカーネルが更新されたことでVirtualBoxのGuest Additionsが動作しなくなり、vagrant up の途中で共有フォルダのマウントに失敗していた、というのがこのエラーの原因とか。以下リンク先に対応方法が記載されている。
http://blog.chopschips.net/blog/2014/09/08/vagrant-problem-with-yum-update/

//apacheインストール
yum install httpd

//普通にyum叩くと古いバージョン持ってくるのでリポジトリから取得
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

//古いバージョンが入っていたら一応消す
rpm -qa | grep php
yum remove php-*

//PHPインストール
yum install --enablerepo=remi,remi-php56 php php-common php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

今回はPHP5.6だが7入れたい人は7をインストールすべし。

ImageMagickライブラリインストール

画像変換に必要なライブラリについて

ライブラリ 内容
ImageMagick C言語で記述された画像処理ライブラリ
ImageMagick-devel C言語で記述された画像処理ライブラリ
imagick PHPからImageMagickを呼び出すのに必要なライブラリ

コマンドで変換する場合はimagick不要。
以下実行すれば一応ImageMagickはインストール出来るが最新バージョンが欲しい場合はrpm実行

ダウンロード先 : https://www.imagemagick.org/script/binary-releases.php

//古いバージョンで良いならyum経由
yum -y install ImageMagick
yum -y install ImageMagick-devel

//新しいのが欲しいなら自分でも持ってきて実行
rpm -Uvh ImageMagick-libs-7.0.3-10.x86_64.rpm
rpm -Uvh ImageMagick-7.0.3-10.x86_64.rpm

PHPから呼び出したい場合にはimagickもインストール。

//imagickインストール
pecl install imagick

インストール後、/etc/php.ini中に「extension=imagick.so」追記して再起動後、Imagickが使えるか確認。

imagick1.png

自分の場合、TIFF画像をPDFやJPGにする必要があったのでconvertコマンド実行。

convert 変換対象ファイル.tiff 変換後ファイル.pdf
convert 変換対象ファイル.tiff 変換後ファイル.jpg

PHPでもImagickが使えるか確認。

<?php

//サンプル
$filename = '/var/www/html/test.jpg';
$image = new Imagick($filename);
$image->setImageFormat('gif');

header("Content-Type: image/gif");
echo $image;
$image->clear();

convertでTIFF変換する時、ファイルによってはTagがサポートされてない的なメッセージが結構表示される。一応変換して閲覧は出来るがエラー内容が消えず気味が悪い。

convert: Unknown field with tag 32931 (0x80a3) encountered. TIFFReadDirectory @ warning/tiff.c/TIFFWarnings/918.
convert: Unknown field with tag 32934 (0x80a6) encountered. TIFFReadDirectory @ warning/tiff.c/TIFFWarnings/918.
convert: 2015120824-0077.tif: Null count for "Tag 32934" (type 4, writecount -3, passcount 1). _TIFFVSetField' @ error/tiff.c/TIFFErrors/565.

海外でも同じ事象に遭遇した方がいるが、libtiffのバグでは!?と書かれているだけで解決法は見つからず...。TIFF自体が良くも悪くも自由度の高いフォーマットらしく変換時には色々問題あるようだけど、jpg・pdf・pngなどメジャー所であれば十分使えると思われ...

machio77777
プロジェクトマネージャー / 最近はマネージメント業務や、クライアント折衝がメインのため、業務でコードは書きませんが、プライベートで調べたことをメモ書きレベルで投稿しています。
https://tana-labo.tokyo/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away