プロが教えるわが家の防犯対策術!

画像アップロードするプログラムを作成したのですが、元画像を指定したサイズ(アスペクト比を維持)させて画像をアップロードする方法を何度かトライしたのですが、経験浅く断念しています。GDで処理させる方法がベストと思っていますが、下記のサンプルコードを手直しお願いしていただけるか、下記と同様な手順での処理方法に類似したサイトがあれば教えてください。


処理の条件
・元画像を指定サイズでアスペクト比を維持した状態でリサイズ
・元画像は削除?
・透過Gifも使えるといいです。
・その他アドバイス



if(is_uploaded_file($img)){
$imagesize = getimagesize($img);
switch($imagesize[2]){
case 1:
$img_name = $code . ".gif";
break;
case 2:
$img_name = $code . ".jpg";
break;
case 3:
$img_name = $code . ".png";
break;
default:
unlink($img);
}
if($img_name){
$sendpath = $path.$img_name;
if(move_uploaded_file($img, $sendpath)){
$img_name = $img_name;
}
}
}

A 回答 (2件)

参考にどうぞ。


http://phpspot.org/blog/archives/2007/09/phppng. …

私は使ったことはありませんが、面倒なコーディングの手間が省けるかもしれません。
    • good
    • 0
この回答へのお礼

おそくなりました。ありがとうございます。

お礼日時:2010/07/04 08:13

私が以前作ったものを披露。



組み合わせるとこんな感じに。

...
if(move_uploaded_file($img, $sendpath)){
$img_name = $img_name;
resize_image($sendpath);
}
}
}
...

function resize_image($image_file){
list($src_width,$src_height)=getimagesize($image_file);
if ($src_width>280){
$resize_width = 280;
$resize_height = $src_height * ( $resize_width / $src_width );
$image_src = imagecreatefromjpeg($image_file);
$image_resize = imagecreatetruecolor($resize_width,$resize_height);
imagecopyresized($image_resize,$image_src,0,0,0,0,$resize_width,$resize_height,$src_width,$src_height);
imagejpeg($image_resize,$image_file);
}
}

私のはホームページ上に、横幅280ピクセルに統一したかったのでこうですが、
縦横率を維持するために、固定化される縦幅あるいは横幅を決める必要があります。
重要な処理はここ。

横幅を固定
$resize_width = 280;

高さ調節=元の高さ×(固定横幅÷元の横幅)
$resize_height = $src_height * ( $resize_width / $src_width );

「固定横幅÷元の横幅」
これが比率を保持する役目をはたします。

jpeg用なので、
imagejpeg($image_resize,$image_file);
ここのところは分岐処理が必要かも。

アップロードされた画像ファイルが上書きされますので、
そこらへんはコピーするなどしてうまくしてください。

これでヒントになるかな。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!