-
- //画像のトリミングとスケーリング関数
- //$filepath画像パス、$percentスケーリングパーセンテージ
- function imagepress($filepath,$percent='0.5'){
- //画像タイプ
- header('Content- Type: image/jpeg');
- // 新しい画像サイズを取得します
- list($width, $height) = getimagesize($filepath);
- $new_width = $width * $percent;
- $new_height = $height * $パーセント;
- // リサンプリング
- $image_p = imagecreatetruecolor($new_width, $new_height);
- $image = imagecreatefromjpeg($filepath);
- imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $ new_height, $width, $height);
- // Output
- return imagejpeg($image_p, null, 100);
- }
コードをコピー
元の画像:
レンダリング:
例:
-
-
//$filepath 画像パス, $new_width 新しい幅, $new_height 新しい高さ
- function imagepress($filepath, $new_width, $new_height)
- {
- $source_info = getimagesize( $filepath );
- $source_width = $source_info[0];
- $source_height = $source_info[1];
- $source_mime = $source_info['mime'];
- $source_ratio = $source_height / $source_width;
- $target_ratio = $new_height / $new_width;
// ソース画像が高すぎます
- if ($source_ratio > $target_ratio)
- {
- $cropped_width = $source_width;
- $cropped_height = $source_width * $target_ratio ;
- $source_x = 0;
- $source_y = ($source_height - $cropped_height) / 2;
- }
- // ソース画像が広すぎます
- elseif ($source_ratio {
- $cropped_width = $source_height / $ target_ratio;
- $cropped_height = $source_height;
- $source_x = ($source_width - $cropped_width) / 2;
- $source_y = 0;
- }
- // ソース画像は中程度です
- else
- {
- $cropped_width = $ source_width;
- $ Cropped_height = $source_height;
- $source_x = 0;
- $source_y = 0;
- }
- switch ($source_mime)
- {
- case 'image/gif':
- $source_image = imagecreatefromgif($filepath);
- Break;
- case 'image/jpeg':
- $source_image = imagecreatefromjpeg($filepath);
- break;
- case 'image/png':
- $source_image = imagecreatefrompng($filepath);
- break;
- default:
- return false ;
- break;
- }
- $target_image = imagecreatetruecolor($new_width, $new_height);
- $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
- // トリミングされた
- imagecopy($cropped_image, $source_image, 0, 0, $ source_x, $source_y , $cropped_width, $cropped_height);
- // スケーリング
- imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $new_width, $new_height, $cropped_width, $cropped_height);
- header(' Content-Type: image/jpeg');
- imagejpeg($target_image);
- imagedestroy($source_image);
- imagedestroy($target_image);
- imagedestroy($cropped_image);
- }
コードをコピー
|