[PHP]画像のリサイズ・トリミング(Zebra_Image.php編)

さて、前回に引き続き画像のリサイズ(拡大縮小)し、トリミング(切り出し)についてです。
今回は「Zebra_Image.php」を利用します。

前回同様、今回もアップロードしたファイルを100px×100pxの正方形に中央を基準にトリミングします。

下記ソースの流れはこんな感じです。
1.アップロードしたファイルをリネーム
2.既定フォルダに保存
3.ファイルの縮小・トリミング

<?php
require_once 'Zebra_Image.php';
define('IMAGE_AREA_LENGTH', 100);    //画像(正方形)の1辺の長さ
$upload_path = $_SERVER['DOCUMENT_ROOT'].'/upload/';
if(!is_uploaded_file($_FILES['toProcess']['tmp_name'])){
die('アップロードエラー');
}
//アップロード成功
$tmp_name = $_FILES['toProcess']['tmp_name'];    //元画像ファイル
//ファイル名を取得
$file_name = date('YmdHis');    //YYYYMMDDHHIISSで名前を付ける
$file_name = uniqid($file_name.'_');    //重複しない名前
//拡張子を取得
$wrk = explode('.', $_FILES['toProcess']['name']);
$extension = array_pop($wrk);
//画像保存パス
$output_file = $upload_path.$file_name.'.'.$extension;
//画像を移動
move_uploaded_file($tmp_name, $output_file);
//画像変換
$image = new Zebra_Image();
$image->source_path = $output_file;    //元ファイル
$image->target_path = $output_file;    //書き出しファイル
//リサイズ・トリミング
if (!$image->resize(IMAGE_AREA_LENGTH, IMAGE_AREA_LENGTH, ZEBRA_IMAGE_CROP_CENTER)) {
//エラー発生時
switch ($image->error) {
case 1:
echo 'ファイルが存在しません';
break;
case 2:
echo 'ファイルを読み込めません';
break;
case 3:
echo '変換ファイルを書き出せません';
break;
case 4:
echo 'サポートされてないファイル形式です';
break;
case 5:
echo '変換ファイルはサポートされていない形式です';
break;
case 6:
echo 'GDが書き出しファイルの形式をサポートしてません';
break;
case 7:
echo 'GDがインストールされてません';
break;
}
}

「class.image.php」はリサイズとトリミングを分けて行いましたが
「Zebra_Image.php」はこれを一気に行うことができ、トリミングの中央指定も簡単です。

※ご注意
掲載している内容についてはご自身の責任で参考にされてください。