Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」


Since:2000/05/16
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/09/07

PHP&MySQLの他の記事

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