保存先ディレクトリを選択できる画像アップローダー
/*** 受け取ったあとの処理 ***/ //格納するディレクトリ $updir = "../images"; //アップロードされたファイルが存在するかどうかを確認 if( is_uploaded_file($_FILES["upfile"]["tmp_name"])or die("no")){ //アップロードされたファイルをディレクトリへコピーする if( move_uploaded_file($_FILES["upfile"]["tmp_name"], $updir . "/" . $_FILES["upfile"]["name"])or die("nono")){ chmod($updir . "/" . $_FILES["upfile"]["name"], 0644); $file_name = $updir . "/" . $_FILES["upfile"]["name"]; }else { print "ファイルをアップロードできません。"; } } else { print "ファイルが選択されていません。"; } //アップロードした画像を加工する $image = ImageCreateFromJPEG($file_name); //元画像のサイズを取得する $size = getimagesize($file_name); $old_width = $size[0]; //横 $old_height = $size[1]; //縦 //いろいろ出力して確認しながら。。。 //print "<br>画像の横幅:" . $old_width ."<br>"; //サムネイルの横幅 $new_width = "80"; //縦と横が同じ比率で圧縮されるように計算する $rate = $new_width / $old_width; $new_height = $old_height * $rate; //print "圧縮比:" . $rate . "<br>"; //縮小された画像を貼り付ける(?)画像を作成する $new_image = ImageCreateTrueColor($new_width, $new_height); //imagecopyresizedで元画像を圧縮する if(ImageCopyResized($new_image, $image,0,0,0,0,$new_width,$new_height,$old_width,$old_height)){ print "圧縮されました"; } //サムネイルを保存するためのパスとファイル名。ここではthumというディレクトリを作ります $updirthum = $updir . "/thum/" . $_FILES["upfile"]["name"]; //imageJPEGで圧縮した画像をJPEGとして保存します。 imageJPEG($new_image, $updirthum)or die("could not save image"); 画像IDを破棄します imagedestroy ($dst_img); imagedestroy ($src_img);
ちなみに縮小した画像を表示するには
header("ContentType: image/jpeg"); imagejpeg($new_image);
とします。
imagejpegの前にヘッダー情報を出力しないと、もしくはヘッダー情報の前に何か出力してると、
画像が文字列で出力されてしまいます。。。
画像の表示はできるのに保存ができず2,3日困ってしまいましたが、ただのパーミッッションの
問題だったようです。
SSHでログインして
chmod [775] [ディレクトリ名]
で解決しました。
保存先を別のディレクトリにしてるときは注意
コメントを残す