Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 画像ファイルをリサイズして、データで返す

画像ファイルをリサイズして、データで返す


ちょっと必要に迫られて、画像ファイルを読み込んで、
リサイズしたデータを、ファイルではなく、変数として返す関数を作りましたw

base64_encodeとかを使えば、普通に$_SESSIONの中に放り込めます。

function img_data_resize($file_name, $dest_w = 0, $dest_h = 0, $quality_jpg = 90, $quality_png = 6){
list($src_w, $src_h, $type) = getimagesize($file_name);
switch($type){
case IMAGETYPE_JPEG:
$src_img = imagecreatefromjpeg($file_name);
break;
case IMAGETYPE_PNG:
$src_img = imagecreatefrompng($file_name);
break;
case IMAGETYPE_GIF:
$src_img = imagecreatefromgif($file_name);
break;
default:
return "";
}

if($dest_w == 0 && $dest_h == 0){
$dest_w = $src_w;
$dest_h = $src_h;
}else{
if($dest_h == 0){
@$dest_h = (int)($dest_w / $src_w * $src_h);
}else{
if($dest_w == 0){
@$dest_w = (int)($dest_h / $src_h * $src_w);
}else{
@$dest_w_tmp = (int)($dest_h / $src_h * $src_w);
@$dest_h_tmp = (int)($dest_w_tmp / $src_w * $src_h);
if($dest_w_tmp > $dest_w){
@$dest_h_tmp = (int)($dest_w / $dest_w_tmp * $dest_h_tmp);
@$dest_w_tmp = $dest_w;
}
if($dest_h_tmp > $dest_h){
@$dest_w_tmp = (int)($dest_h / $dest_h_tmp * $dest_w_tmp);
@$dest_h_tmp = $dest_h;
}
$dest_w = $dest_w_tmp;
$dest_h = $dest_h_tmp;
}
}
}

$dest_img = imagecreatetruecolor($dest_w, $dest_h);

imagecopyresampled($dest_img, $src_img, 0,0,0,0, $dest_w, $dest_h, $src_w, $src_h);
ob_start();
switch($type){
case IMAGETYPE_JPEG:
imagejpeg($dest_img, null, $quality_jpg);
break;
case IMAGETYPE_PNG:
imagepng($dest_img, null, $quality_png);
break;
case IMAGETYPE_GIF:
imagegif($dest_img, null);
break;
}
$data = ob_get_contents();
ob_end_clean();
imagedestroy($src_img);
imagedestroy($dest_img);
return $data;
}

この記事の最終更新日:2017/11/15
最初に記事を書いた日:2017/09/07

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 画像ファイルをリサイズして、データで返す