#setlinebreak(on)
* imagemagickを使った動的画像変換 PECL::IMagick[#h310c9ee]
#htmlinsert(googleAdsense.html)
#ref(http://dozo.rgr.jp/img/img52_pecl.gif,right,nolink,around,PHP::PECL)

[[PECL::imagick:http://pecl.php.net/package/imagick]]
http://pecl.php.net/package/imagick 
[[ImageMagick:http://www.imagemagick.org/]]と[[GraphicsMagick:http://www.graphicsmagick.org/]]を取り扱う強力な関数。
[[exec:http://jp.php.net/manual/ja/function.exec.php]]を使うよりも安定している感じ。

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

ソースコードはこんな感じ
 // 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 );                                 // 終了


以下のコマンドは次のコードで等価になります。
 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); // ファイルの書き出し





[[GD:http://jp.php.net/manual/ja/ref.image.php]]を使っているのをあえて[[ImageMagick:http://www.imagemagick.org/]]にする必要はないが、
すでに[[ImageMagick:http://www.imagemagick.org/]]を使っているのを[[exec:http://jp.php.net/manual/ja/function.exec.php]]から[[PECL::imagick:http://pecl.php.net/package/imagick]]にするというメリットは大きいと思う。
セーフモードの対象からはずれるとか、
オーバーヘッドが軽減できるとか、
[[exec:http://jp.php.net/manual/ja/function.exec.php]]が気持ち悪いとか。。。[[popen:http://jp.php.net/manual/ja/function.popen.php]]を使えばいいかな。。。大差ないな。。。






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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較