• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:はじめまして。)

PHPで画像のアップロードページを作成する方法

このQ&Aのポイント
  • PHPを使用して画像のアップロードページを作成しているが、画像の圧縮やサイズ変更の方法がわからない。
  • 過去の質問でも「convert -geometry 20% image.jpg image_small.jpg」という記述方法が出ているが、作成された画像はどこに保存されるのか、ファイル名の変換方法やパスの記載についても不明。
  • 具体的な方法がわからないため、画面から受け取ったファイルを圧縮しサーバ上のフォルダに保存するまでの手順を教えてほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

system("convert -geometry 20% image.jpg image_small.jpg"); はImageMagickを使ったやりかたですね PHPにGDライブラリーがインストールしてあればこれを使ってもいいと思います http://tsuttayo.jpn.org/php/gd/ http://goodjob.boy.jp/chirashinoura/id/79.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPでimageファイルをアップロードする際、

    PHPでimageファイルをアップロードする際に、デジカメのサイズでは大きすぎるので小さなサイズでアップロードしたいと思っています。 <?php $error = ""; if (isset($_POST["submit"])) { $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext != 'jpg' && $ext != 'gif' && $ext != 'png') { $error['image'] = 'type'; } } if (empty($error)) { // 画像をアップロードする $image = date('His') . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], 'image/' . $image); $_POST['image'] = $image; $error = "アップロード成功!"; } else { $error = "アップロード失敗!"; } } ?> 上記のコードだとそのままのファイルサイズでアップされるのですが、サイズを(400px、300px)の様に小さくしてアップする方法はないでしょうか? 現状ではフォトショップなどで一度画像を小さくしてアップしています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 画像アップロードについて

    いつもお世話になっております。 画像アップロード機能を作成し、問題なくアップロードを行うことができたのですが、 ある一定サイズ(約2MB)を超えるとアップロードが行われない現象が発生しました。 アップロードした画像は既定のサイズにリサイズして保存する仕様となっているのですが アップロード自体が行われないため、困っています。 以下【該当処理抜粋】------------------------------------------------------------- // ファイル名を設定する $fname = "hoge.jpg"; // 画像の幅・高さを設定する【規定値】 $w_size = "150"; $h_size = "100"; $tmp_name = $_FILES[$fname]['tmp_name']; // 画像ファイル名 $filename = "./hoge/".$fname; if (is_uploaded_file($tmp_name)){ $type = $_FILES[$fname]['type']; if ($type == "image/jpeg" || $type == "image/pjpeg") { // 画像ファイル存在チェック if(file_exists($filename)){ // ファイルが存在する場合は削除する unlink($filename); } // 画像ファイル名でアップロードをおこなう move_uploaded_file($tmp_name, $filename); // 画像ファイルのサイズを取得する list($sw, $sh) = getimagesize($filename); $src = imagecreatefromjpeg($filename); $dst = imagecreatetruecolor($w_size, $h_size); // 画像ファイルを既定サイズにリサイズする imagecopyresized($dst, $src, 0, 0, 0, 0, $w_size, $h_size, $sw, $sh); imagejpeg($dst, $filename); echo $fname[1]."ファイルのアップロードが完了しました。<br>"; }else{ echo $fname ."ファイルの画像形式が正しくありません。<br>"; } }else{ echo $fname ."ファイルはアップロードされませんでした。<br>"; } ---------------------------------------------------------------------------------------------------- 現象について調べたところ、PHPにはアップロードサイズが設定されている(デフォルト2MB)ため サイズの大きいファイルはアップロードできないようです。 サーバーはロリポップでレンタルしているためphp.iniの設定を変更ができません。 画像自体を事前にリサイズしてアップロードを行えば問題ないのですが、 今後、一般の方にも公開を予定してまして、リサイズ方法が分からない人(そのようなソフトがない人)にも 操作できるようにデジカメで撮った写真をそのままアップロードできる形式にしたいと考えています。 何かいい方法があればご教授願います。 【環境】 PG:php4.3.11 WEB:Apache

    • 締切済み
    • PHP
  • imagemagicコマンドのエラーについて

    imagemagicコマンドのエラーの解消について質問です。 /usr/loca/bin/convert -geometry 100x100 aaa%10.jpg aaa%10_change.jpg と実行すると、 missing an image filename 'aaa%10_change.jpg' convertic /ConvertImageCommand/2800 というエラーが発生します。 ファイル名の%がいけないと思うのですが、 エスケープ(\や')で囲ってもエラーが解消しません。 1.ファイル名に%を使いたい場合はどのようにしたらいいのでしょうか。 2.他にも命名規則として使用不可な記号があるのでしょうか 調べたのですが、ファイル名についての記述が見当たらず、困っています。 どなたかご教授よろしくお願いします。

  • 【PHP+ImageMagick】画像アップロード

    【PHP+ImageMagick】現在、PHP Version 5.1.6にて以下の事をしようとしています。 1画像のUPLOAD(move_uploaded_file関数) 2UPLOADした画像のサムネイル作成(ImageMagickのconvertコマンド) 「手順START」 ・00003.JPGをアップロード ・00003.JPGのサムネイル作成失敗。 ・サムネイル作成部のみを抽出したスクリプトにて00003.JPGに対してサムネイル作成を実行 ・サムネイル作成失敗 ・cp -p 00003.JPG 000033.JPG とし000033.JPGを作成 ・権限等を00003.JPGと同じ物とし修正。 ・サムネイル作成部のみを抽出したスクリプトにて000033.JPGに対してサムネイル作成を実行 ・サムネイル作成成功 「手順END」 convertコマンドにて標準出力に吐き出されたログを見ると、画像ファイルに対して「Permission denied」と出力されていました。 ちなみに、コマンドベースでのphp実行は問題なく処理されます。今回の現象はWebブラウザからのアクセス時のみに発生しています。 php.iniのセーフモードはOFFになっています。 この現象について、わかる方がいらっしゃいましたら教えて頂けないでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • imagemagickのコマンド

    こんにちは。 画像のサイズ変更をしたいと思い、imagemagickをインストールしました。環境はubuntuです。 サイズ変更の場合はconvertコマンドのオプションの-geometryや-resizeを使うとできるとのことで試したのですが、 $ convert -geometry '320×480' test.jpg test_geo.jpg とすると convert: invalid argument for option `-geometry': 320×480 @ error/convert.c/ConvertImageCommand/1592. のようなエラーが出てしまいます。resizeの場合も同じです。 どうすればサイズ変更ができるのでしょうか。 もしくはimagemagick以外で画像のサイズを縮小、拡大できるお勧めのフリーソフトなりがありましたら教えてください。よろしくお願いします。

  • perl Image::Magick

    恐れ入ります。perlでImage::Magickで画像の処理をしているのですが、画像によって途中までしか変換されていなかったりする画像(下部分が灰色)のものが出ます。この原因と対策をご存じの方はいらっしゃいますか? $filename = "./folder/image.jpg"; $filename 2= "./folder2/image.jpg"; $image = Image::Magick->new; $image->Read("$filename"); $width = $image->Get('width'); $height = $image->Get('height'); $image -> Set( quality => 60 ); $image->Write("$filename2"); 以上のようにしています。HTMLからファイルを受け取る部分は、 my ($query,$fileName); $query = new CGI; $fileName = $query->param('fileName'); open(OUT, ">./folder/image.jpg"); binmode(OUT); while(read($fileName, $buffer, 2048)) { print OUT $buffer; } としています。HTMLからのアップロードは、対象フォルダの画像を確認した場合問題無くアップされています。以上よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • preg_matchの使い方

    選択した画像ファイルをgifフォルダにアップロード保存して 同入力画面にも出力するサンプルの勉強をしています。 「preg_match」を使ってアップロードできるファイルを gif,jpg,pngに限定するというようにしたいのですが 使い方が間違っているようで上手く行きません。 どこが間違っているのでしょうか? よろしくお願いいたします。 ---------------------------------------------------------- <html> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="data"> <input type="submit" value="表示"> </form> <?php $updir = "./gif/"; $filename = $_FILES["data"]["name"]; if(file_exists($_FILES["data"]["tmp_name"])){ $filesize = filesize($_FILES["data"]["tmp_name"]); if($filesize <= 100000){ if(preg_match("/\.gif$ | \.jpg$ | \.png$/", $filename)){ ←←※※※ move_uploaded_file($_FILES["data"]["tmp_name"], $updir.$filename); echo "ファイル名".$filename."アップロード成功!"; echo "<br><br>"; echo "<img src='./gif/$filename'>"; }else{ echo "jpg,pngもしくはgifのファイルしかアップできません。"; } }else{ echo "$filesize バイト。ファイルサイズが大きすぎます。"; } } ?> </body> </html> ----------------------------------------------------------

    • ベストアンサー
    • PHP
  • アップロードファイルのパーミッションについて

    送信フォームから画像ファイルをアップロードさせるページを作成しました。 そのアップロードされた画像ファイルについてですが、 パーミッションは600となっています。 これを604にしたいのですが、毎回1つ1つ手動で変更する以外に便利な方法は無いでしょうか?(スクリプトにパーミッションを指定する関数を組み込むなど) ちなみに、下記が現在のアップロード用phpソースです。 ============================================================== if (is_uploaded_file($pic_tmp)) { move_uploaded_file($pic_tmp, "../pic/" .$pic_name)) } ============================================================== どなたか有識者の方でご教示頂けましたらどうか宜しくお願い致します!

    • ベストアンサー
    • PHP
  • MySQLにデータが書き込まれない

    PHPバージョン4.4.4を使用しています。 画像を複数同時アップロードする(下記コード参照)のを作成している最中で、 画像ファイルは問題なくアップロード出来るのですが、 そのアップロードされたファイル名だけを MySQLに書き込み(アップデート)をしたいのですが、 何故か出来ません。 ============== $count = 0; <コード省略> $count++; $uploaded[$count] = $this_upload; if (array_key_exists(1, $uploaded)) { $mpic[1]=", picture_1='".$uploaded[1]['large']."', picture_1t='".$uploaded[1]['small']."'"; } else { $mpic[1] = ''; } if (array_key_exists(2, $uploaded)) { $mpic[2]=", picture_2='".$uploaded[2]['large']."', picture_2t='".$uploaded[2]['small']."'"; } else { $mpic[2] = ''; } if (array_key_exists(3, $uploaded)) { $mpic[3]=", picture_3='".$uploaded[3]['large']."', picture_3t='".$uploaded[3]['small']."'"; } else { $mpic[3] = ''; } if (array_key_exists(4, $uploaded)) { $mpic[4]=", picture_4='".$uploaded[4]['large']."', picture_4t='".$uploaded[4]['small']."'"; } else { $mpic[4] = ''; } if (array_key_exists(5, $uploaded)) { $mpic[5]=", picture_5='".$uploaded[5]['large']."', picture_5t='".$uploaded[5]['small']."'"; } else { $mpic[5] = ''; } if (array_key_exists(6, $uploaded)) { $mpic[6]=", picture_6='".$uploaded[6]['large']."', picture_6t='".$uploaded[6]['small']."'"; } else { $mpic[6] = ''; } if (array_key_exists(7, $uploaded)) { $mpic[7]=", picture_7='".$uploaded[7]['large']."', picture_7t='".$uploaded[7]['small']."'"; } else { $mpic[7] = ''; } if (array_key_exists(8, $uploaded)) { $mpic[8]=", picture_8='".$uploaded[8]['large']."', picture_8t='".$uploaded[8]['small']."'"; } else { $mpic[8] = ''; } if (array_key_exists(9, $uploaded)) { $mpic[9]=", picture_9='".$uploaded[9]['large']."', picture_9t='".$uploaded[9]['small']."'"; } else { $mpic[9] = ''; } $todayis = strftime('%A, %B %#d, %Y - %H:%M:%S ') ; $who = $session['first_name']; $query = "LOCK TABLES $table3_1 WRITE"; mysql_query($query); $query = "UPDATE $table3_1 SET date_time_add_pic_2 = '$todayis', by_who_pic_2 = '$who', $mpic[1] $mpic[2] $mpic[3] $mpic[4] $mpic[5] $mpic[6] $mpic[7] $mpic[8] $mpic[9], date_time_rmv_pic = '', by_who_pic_rmv = '' WHERE cID = '$c_id'"; mysql_query($query); $query = "UNLOCK TABLES"; mysql_query($query); ============== 下記のようなコードを入れてみると 内容があるものはちゃんと表示されますし、 内容がないものは表示されません。 ============== echo $mpic[1]; echo $mpic[2]; echo $mpic[3]; echo $mpic[4]; echo $mpic[5]; echo $mpic[6]; echo $mpic[7]; echo $mpic[8]; echo $mpic[9]; ============== 一体何が間違っているのか、エラーコードが出ないので解りません。 何処が間違っているのでしょうか? 教えて頂けると大変助かります。 どうぞ宜しくお願いします。

    • 締切済み
    • PHP
  • 複数ファイルを規定サイズにまとめてzip圧縮したい

    10,000枚の.jpgファイルがあるのですが、それを一括指定→25MB以内に収まるよう分割された複数のzipファイルとして圧縮する方法もしくはフリーソフトはありませんでしょうか。 「image.zip.001 / image.zip.002…」の様に25MB以内に大きな一つのファイルを細かく分割、後に結合する通常の「分割・結合のファイル」ではなく、圧縮したいファイルとして一括指定されたものをファイルサイズで区切りいい範囲ごとに「image001.zip / image002.zip …」のように連番で、それぞれ独立した圧縮ファイル(単独で解凍可能なファイル)として作成したいのです。 とあるショッピングサイトに商品画像を登録したいのですが、そのサイトへ画像をアップロードする条件が「zipの場合は1ファイル25MB」以内となっております。 これまで多くて数百枚程度でしたため、25MBに収まる範囲ごとに手動で選択・圧縮を行っていたのですが、今回約10,000枚、2.5GBほどの画像ファイルに対し25MBごとに分けなければならなくなり、手動で行うにはあまりに効率が悪いため何か良い方法があればお教え下さい。 ※ファイルサイズでなくても、「100枚ごとに分けて圧縮」の様に枚数指定でもO.K.です。

このQ&Aのポイント
  • 遠距離恋愛の男子高校生が、3ヶ月ぶりに彼女とのデートプランを提案して欲しい。
  • デートプランのコースや、特別な日の過ごし方について悩んでいる。
  • クリスマスや誕生日のプレゼントについてもアドバイスが欲しい。
回答を見る

専門家に質問してみよう