画像をアップロードする時に、画像処理(フィルター)をかけてみる。その2(wp_handle_upload):【89日目】WordPress1日1プラグイン

ようこそのお運びで、厚く御礼申し上げます。
89日目です。今回も前回と同じく、画像をアップロードするときに「画像の処理」をかけてみます。でも前回とは手順が違います。

メディアで画像をアップロードするときに、画像処理をかけてみる。その2。

前回とは仕様が少し違いますので、前回と今回を比較をします。

今回の仕様について

前回も説明しましたが、このアップロード時処理をする方法は二つ方法があります。

今回はこの後者の仕様で処理を行います。

  • 後は前回同様、サンプルとして以下の条件を作ります
    • 今回はjpegのみに処理をかけてみる
    • 白黒フィルターをかける

どう違うの?どう使うの?

ちょっとした例にはなりますが、

  1. 前者は、関係する画像の圧縮率等を返る場合に向いている
  2. 後者は、色等を変えるフィルターやトリミング等は向いているかも

トリミングして、圧縮率を変える」等をしたい場合は、両方フックしてあげればよいかもしれません
※もう一つフックをかけれる場所があるかも・・・

画面遷移について

前回と変わりませんが、一応。

画像のアップロード時に処理を行うので、「メディアを追加」などから画像をアップロードします。
今回アップロードする画像はこちら
line

アップロードされると、対象の画像はサムネイルを含め「白黒」になっています。
140709-0001

プラグインファイルを作成していきます。

wp-contents>plugins」ディレクトリに「paka3_upload_img2」ディレクトリを作成し、「paka3_upload_img2.phpを作成します。
140708-0004

コード全体を見たい方は、先にこちらからどうぞ。

※今回は、functions.phpにかいてもどちらでもかまいません。

wp_handle_uploadをフックします。

今回は、画像を新規にアップロードするときにファイルを作成するwp_handle_uploadをフィルターフックします。

WordPress Codex : wp_handle_upload

クラスを構成してみよう

クラス構成は、wp_handle_uploadをフックする形で以下のようにしてみます

$a = new Paka3UploadImg2 ;

class Paka3UploadImg2{
	function __construct(){
		add_filter('wp_handle_upload', array($this,'paka3_img_filter') );

	}

	function paka3_img_filter( $arrayData ){
		//*ここに処理を書く
		return $arrayData;
	}

追加処理をする関数「paka3_img_filter」

ここでは、アップロードした画像に直接フィルター処理をおこなっています。
(※もちろん、サムネイル等を作成する前の処理)

function paka3_img_filter( $arrayData ){
	$imgPath = $arrayData['file'] ;
	$mime = wp_check_filetype(basename( $imgPath ), null );

	//ここで、条件を[jpgのみとかファイル名にhoge_がついているとか]
	if( $mime['type'] == "image/jpeg"){
		//ファイルをイメージへ
		$im = $this->paka3_imagecreate( $imgPath );
		//フィルター処理
		$im = $this->imageGdfunc($im);
		//ファイル保存
		$res = $this->paka3_image($im,$imgPath);
		//イメージの削除
		imagedestroy($im);
	}
	return $arrayData;
}

今回はイメージの作成(paka3_imagecreate)フィルター(imageGdfunc)画像の保存(paka3_image)についての説明は省略します。
ソースコードに記述していますので、そちらを参照してください

GDについては前回のポイントを参照してください。

以上で完了。サムネイル画像の作成等はWordPressにおまかせ

wp_handle_uploadは、サムネイル画像等を作成する前に行われる処理です。
こちらで作成したフィルター処理をした画像をもとに、WordPressがサムネイル画像を構成します。

コードを作成し、プラグインを有効にしてみる

今回のコードは以下のようになります。
プラグインを有効化して、画像をアップロードしてみてください。
前回のプラグインと共存すると、処理がわかりにくいので、前回のは一度停止してみましょう。140709-0003

今回のまとめ

こちらの方がお手軽ですが、画像の容量などトラフィックを考えるようになってくると、コレだけだとちょっと頼りないかも。でもこちらだけでもOK!とう需要もありそうですね。

wordpress1日1プラグイン

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です