• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

ImagemagickをPHPで利用するAPI PECL::IMagick

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

ImagemagickをPHPで利用するAPI PECL::IMagick 概要

PECL::imagickとはImageMagickとGraphicsMagickを取り扱う強力な関数。
execを使うよりも安定している感じ。

ImageMagickの主な使い方は。。。 まぁ案件によりけりでしょうけど、 「画像サイズ変更」「フォーマット変更」 だと思う。 GD使えばと言うのもあるがそれはまぁ、おいておいて。

以下のコマンドは次のコードで等価になる。

 $ convert +profile '*' -resize $width -quality $i $org_image $target_image
 list($org_width, $org_height, $org_type, $org_attr) 
  = getimagesize($org_image); // オリジナルデータの取得
 $handle = imagick_readimage($org_image); 
 imagick_profile($handle, "*", IMAGICK_PROFILE_OWN); // プロファイルの設定
 imagick_convert($handle, "JPEG");  // JPEGに変換
 imagick_set_image_quality($handle, $i);  // クォリティの設定
 imagick_resize($handle, $width, $org_height, IMAGICK_FILTER_UNKNOWN, 1); // サイズの変更 
 imagick_writeimage($handle, $target_image); // ファイルの書き出し

ImagemagickをPHPで利用するAPI PECL::IMagick サンプル

ソースコードはこんな感じ

 // PNGファイルをJPEGファイルに変換するとする
 // PNG : sample.png
 // JPEG: sample.jpg
 
 // Imagickを使ってファイルを開く
 $handle = imagick_readimage( "sample.png" ) ;     // ファイル読み込み
 imagick_convert( $handle, "JPG" ) ; // フォーマットの指定
 
 // リサイズ
 if ( !imagick_resize( $handle, $width, $height, IMAGICK_FILTER_UNKNOWN, 0 ) ) 
    error( $handle );                                 // 終了
 
 // 書き込み
 if ( !imagick_writeimage( $handle, "sample.jpg") )
    error( $handle );                                 // 終了

GDを使っているのをあえてImageMagickにする必要はないが、 すでにImageMagickを使っているのをexecからPECL::imagickにするというメリットは大きいと思う。 セーフモードの対象からはずれるとか、 オーバーヘッドが軽減できるとか、 execが気持ち悪いとか。。。

デメリット ハンドラを取りまわすような感じでオブジェクト指向的に使えない。 ImageMagickの最新版が対応バージョンになっていないぽい。 CGI版CLI版は使えない。

ImagemagickをPHPで利用するAPI PECL::IMagick 関連リンク


pecl/imagick.txt · 最終更新: 2007/12/06 12:39 by dozo