GDエクステンションと連携して使う、画像処理のための新作エクステンションです。
表題の機能のほか、ImageMagickを使って読み込んだ画像をGDの画像リソースに変換して返す機能もあります。
PHP5なら素直にimagickエクステンションを使った方が対応フォーマットも機能も多くて良いのですが、既存のコードをなるべく変更することなく多くの画像形式を読み込みたい、またはBMPで出力したい、といったときに有用だと思います。
読み込みにはImageMagickライブラリを、BMPの書き出しには自前のコードを使っています。
インストールはいつもの手順で。--with-wand-configでImageMagickのインストールディレクトリかWand-configのフルパスを指定します。
tar xfz php_gdextra-0.1.0.tgz cd php_gdextra-0.1.0 phpize ./configure --enable-gdextra --with-wand-config=/usr/local make sudo make install
PHPのヘッダファイルとImageMagickのヘッダファイルで重複しているマクロがあるためにmakeで警告がいくつか出ますが、特に問題はないようです。
サンプル:
<?php // TIFFからイメージリソースを作成する $im1 = imagecreatebymagick('sample.tif'); // GIFとして書き出し、それを元にイメージリソースを作成する imagegif($im1, 'sample.gif'); $im2 = imagecreatefromgif('sample.gif'); // TrueColorイメージからは24bits/pixelのBMPが作成される imagebmp_ex($im1, 'sample1.bmp'); // インデックスカラーイメージからは8bits/pixelのBMPが作成される imagebmp_ex($im2, 'sample2.bmp'); ?>
関数の説明:
resource imagecreatebymagick(string $filename)
filenameから画像を読み込み、イメージ関数で扱うための画像リソースを返す。
読み込みに失敗したときはE_WARNINGを発生してfalseを返す。
画像形式は自動で判定され、対応する画像形式はリンクしているImageMagickのそれによる。
元の画像がインデックスカラー画像でも作成される画像はTrueColor。
TrueColorからインデックスカラーへの変換はimagetruecolortopalette()で。
resource imagecreatefromstring_ex(string $data)
画像データからイメージ関数で扱うための画像リソースを返す。
引数がファイル名かバイナリデータかという点を除いてはimagecreatebymagick()と同じ。
imagecreatefromstring()の対応フォーマットが多いバージョンのようなもの。
bool imagebmp_ex(resource $image[, string $filename])
画像を非圧縮のBMP形式で出力する。
TrueColorの画像からは24bits/pixelの、インデックスカラーの画像からは8bits/pixelのBMPを出力する。
GDの次期バージョン(2.1.0)でもBMPがサポートされるかもしれないので、かぶらないように関数名をimagebmp_ex()とした。
string imagegetbmp_ex(resource $image)
画像をBMP形式で取得する。