画像ファイルをリサイズして、データで返す
ちょっと必要に迫られて、画像ファイルを読み込んで、
リサイズしたデータを、ファイルではなく、変数として返す関数を作りました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
この記事をシェアする
関連記事
- ・外部メールサーバーからメール送信するPHPの関数(簡略版)
- ・TinyMCEにelFinderを搭載した環境で、ファイルを選択できるようにする方法
- ・秒速でPHPのフォームにreCAPTCHA v3を導入するサンプルコード
- ・htaccessのRewriteでGETパラメータを無理やり引き継ぐPHPコード
- ・RewriteRuleが効いているURLで、?以降の文字列を取得する方法
- ・ワードプレスでコメントを完全無効にする方法【コメントスパム対策】
- ・MacでPHP環境のローカルサーバーを立ち上げる方法
- ・サーバー内の全てのファイルから、文字列検索
HTTPS化作業に使える - ・PHPで、指定したディレクトリ以下のファイル一覧を再帰的に取得
- ・Googleストリートビューで建物内部が表示されないようにする
Google Maps API v3