[PHP]ImageMagickライブラリーで簡単に画像処理!

こんにちは。
BIG1等を当てたいサラリーマンです。

今回は、ImageMagickライブラリーとImagickモジュールを使っての画像処理エントリーです。
画像にテキストを載せる処理をしたいのでフォントも用意します。

また、こちらのエントリーで構築したローカル開発環境を使います。

[ローカル開発環境 #03]Web開発環境を構築しよう
ローカル開発環境の構築:もくじ ローカルサーバーを導入しよう ローカルサーバーの設定をしよう Web開発環境を構築しよう A...

もくじ

  • パッケージをインストール
  • フォントをダウンロード
  • サンプルコード

パッケージをインストール

必要なパッケージです。

  • php-devel
  • php-gd
  • ImageMagick
  • ImageMagick-devel
  • imagick

さっさっさとインストールします。

sudo yum install -y php-devel php-gd
sudo yum install -y ImageMagick ImageMagick-devel
sudo pecl install imagick

imagickだけは、PECLからインストールします。
次のように進めます。

Please provide the prefix of Imagemagick installation [autodetect] :

Enterで進みます。

Build process completed successfully
Installing '/usr/include/php/ext/imagick/php_imagick_shared.h'
Installing '/usr/lib64/php/modules/imagick.so'
install ok: channel://pecl.php.net/imagick-3.3.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

これは、php.iniに追加設定が必要とのメッセージです。

php.iniを編集します。

sudo vi /etc/php.ini

以下を最終行に追記します。

[imagick]
extension=imagick.so

続いてApachを再起動します。

sudo service httpd restart

最後に確認コマンドを実行して、GDとimagickが有効になっていればOKです。

php -i | grep -Ei '^(gd|imagic|gmagic|imagemagick)' | grep enabled
GD Support => enabled
imagick module => enabled

PHP: ImageMagick – Manual

フォントをダウンロード

今回はスタンダードな感じがいいので、フリーの日本語フォントであるIPAexフォント(ゴシック)を使います。

IPAexフォント/IPAフォント | IPAフォントのダウンロードサイトです

サンプルコード

事前準備としてimagick_sample.phpを新規作成し、ダウンロードしたIPAexフォント(ipaexg.ttf)を同一ディレクトリに格納します。
サンプルの要件は、元画像に対して文字列を上下左右中央にテキストを描画です。

<?php
/* 初期化 */
$text = 'こんいちわ!日本語フォント';
$file = 'smp-img.png';
$font = 'ipaexg.ttf';
$color = '#fff';

/* オブジェクトを生成 */
$image = new Imagick($file);
$draw = new ImagickDraw();

/* フォントをセット */
$draw->setFont($font);
$draw->setFillColor($color);
$draw->setFontSize(60);

/* ポジションをセット */
$draw->setTextAlignment(imagick::ALIGN_CENTER);

/* 画像サイズを取得 */
$width = $image->getImageWidth();
$height = $image->getImageHeight();

/* メトリックを取得 */
$metrics = $image->queryFontMetrics($draw, $text);

/* テキストを描画 */
$draw->annotation(($width / 2), ($height / 2) + ($metrics['ascender'] / 2) + ($metrics['descender'] / 2), $text);

/* 画像を生成 */
$image->setImageFormat('png');
$image->drawImage($draw);

/* 画像を保存 */
file_put_contents('draw-img.png', $image);

PHP: ImagickDraw::annotation – Manual

思い通りの画像を生成することが出来ました!

draw-img

スポンサーリンク
レクタングル(大)
レクタングル(大)

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>