PHPで画像加工時にぼかし加工を施す方法

8-trip-52e72f3d-4f4c-4a33-935d-1eceac1f1e3e

2014年02月17日(月)

WEB系の仕事の場合はこういうのって結構あると思います。画像にエフェクトをかけたりする作業。

僕もそんなに詳しくないのですが調べたら結構たくさんのエフェクトがあって、とても想像が広がりました。是非おんどれらも調べてみるのがいいかもしれませんね。

 

GDを使って画像加工

今回はGDを使ってやってみました。

PHPのimagefillterという関数を使います。

http://jp2.php.net/manual/ja/function.imagefilter.php

 

今回使用するフィルターはこちらになります。

 

IMG_FILTER_GAUSSIAN_BLUR

 

画像にぼかし処理を加える事が出来ます。

 

実際に行う処理

実際に行うのは以下の処理を実行する事によりできます。

結構難しそうでとっつきにくそうですが、一度覚えておくとあとはフィルター関数をいじるだけで大体の画像エフェクトを楽しめると思うのでここは絶対に通った方がいい道だと思いますね。

 

// 対象の画像パスを指定
$imagePath = 'パスを指定';
// 保存先画像パス
$saveimagePath = 'パスを指定';
// 画像情報取得
$imageInfo = getimagesize( $imagePath );
// ファイルタイプを取得
$imageType = $imageInfo['mime'];
// それぞれのファイルタイプに応じて読み込む
if($this->imageType == 'image/jpeg'){
 //元画像を読み込み
 $dstImage = imagecreatefromjpeg( $imagePath );
}elseif($this->imageType == 'image/gif'){
 //元画像を読み込み
 $dstImage = imagecreatefromgif( $imagePath );
}elseif($this->imageType == 'image/png'){
 //元画像を読み込み
 $dstImage = imagecreatefrompng( $imagePath );
}
// ぼかし加工処理
imagefilter( $dstImage, IMG_FILTER_GAUSSIAN_BLUR );
/* ぼかしの強度を強める場合は連続して加工していくしかなさそうです
imagefilter( $dstImage, IMG_FILTER_GAUSSIAN_BLUR );
imagefilter( $dstImage, IMG_FILTER_GAUSSIAN_BLUR );
imagefilter( $dstImage, IMG_FILTER_GAUSSIAN_BLUR );
imagefilter( $dstImage, IMG_FILTER_GAUSSIAN_BLUR );
*/
// それぞれのファイル対応に応じて処理
if($this->imageType == 'image/jpeg'){
 $response = imageJpeg( $dstImage, $saveimagePath );
}elseif($this->imageType == 'image/gif'){
 $response = imageGif( $dstImage, $saveimagePath );
}elseif($this->imageType == 'image/png'){
 $response = imagePng( $dstImage, $saveimagePath );
}
// メモリ解放
imagedestroy( $dstImage );

 

 

どうやら現状GDのぼかし加工でIMG_FILTER_GAUSSIAN_BLURを使用する場合、ぼかしの強度を強める時は連続処理で実行するしかなさそうです。。。

ImageMagickのblurImage()関数なら強度を指定できるみたいです。

まぁ僕はGDを使用しているので今回はこのようにしました。参考になれば幸いです。

 

その他色々な画像処理に関して

サンプルは以下サイトを見るのがわかりやすくていいと思います。

http://kyasper.com/php-tips/

これを見ると結構色々な処理ができる事がわかりますね!

 

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR