- 締切済み
画像アップロード時の複数パターンのリサイズ
皆さんのお知恵をお貸し下さい。 現在PHPでアップロードした画像を処理していますが、 これを複数パターンのサイズ変更が出来なくて悩んでいます。 1つのファイルで 【width 280px height 430px】 【width 240px height 320px】 【width 170px height 200】 【width 60px height 60px 】 お手数ですがご教授して頂けると幸いです。 ※汚いコードで申し訳ございません。 PHP:5.2.17 サーバー:さくらインターネット up.php ------------ <?php if($_POST['id'] === ""){ echo 'ID Error'; exit(); } if($_POST['name'] === ""){ echo 'Name Error'; exit(); } if($id = $_POST['id']){ preg_match("/^[0-9]+$/",$id) or die('ID Error'); } //写真アップロード処理 for ($i = 0; $i < 4; $i++) { if ( $_FILES["upfile"]["size"][$i] === 0 ) { $img_filename[$i] = "no_image.jpg"; } else { $file_nm = $_FILES['upfile']['name'][$i]; $filename = $_FILES['upfile']['name'][$i]; $extension = pathinfo($file_nm, PATHINFO_EXTENSION); $tmpFilename = $_FILES['upfile']['tmp_name'][$i]; $imgDir = 'img'; $thumbnailDir = 'thumbnail'; list($width,$height)=getimagesize($_FILES['upfile']['tmp_name'][$i]); //ファイル名 $img_filename[$i] = $_POST['cast_id']."_$i". "." . $extension; # ファイルを移動 $destFilename = $imgDir . "/" . $img_filename[$i]; move_uploaded_file($tmpFilename, $destFilename) or die("Failed to upload $filename"); #画像比率 $new_width = 100; $rate = $new_width / $width; $new_height = $rate * $height; # 次にファイルをリサイズしてサムネイル用のディレクトリに保存する $thumbnailFilename = $thumbnailDir . "/" . $img_filename[$i]; exec("convert -resize {$new_width}x{$new_height}! $destFilename $thumbnailFilename", $result, $status); ($status == 0) or die ("Failed to create thumbnail image"); } $photo[$i] = $img_filename[$i]; } ?> よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- bakaok
- ベストアンサー率22% (33/148)
そもそもさくらインターネットでconvertコマンドが使えるのか? 仮に使えたとしてPHPプログラムを動かすユーザにパスが通っているのか? http://www.sakura.ne.jp/rentalserver/matrix.html これを見る限りPHPは一部サービス以外はCGIモードだね。 CGIモードの場合ExecCGIを利用しているのかによって実行ユーザが変わる。 まぁまともなPHPを理解している人ならこんなめんどくさい環境調査するよりPHPならGDを利用するのが常識でしょうね。
お礼
ありがとうございます。 さくらインターネットで、今回のコード実行で 任意ファイル名・サムネイル作成は出来ています。 GD導入は始めに考えていたのです。 http://goodjob.boy.jp/chirashinoura/id/79.html さんのサイトを参考に導入しようとしていたのですが、 処理した画像の保存方法が判らなくて…。 // ファイルに保存する場合。 ImageJPEG($image, $file_path, 70); //3つ目の引数はクオリティー(0~100) $file_pathは、formからのアップロードを考えているので、 $file_path = $_FILES['upfile']['tmp_name']; ですよね?