• 締切済み

PHPで画像アップロード時にサイズ変更できるのですか?

いつも適切なご回答ありがとうございます。 PHPでPCサイトに画像アップロード機能というのは以前に作成したことがあります。 <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="upfile" size="35" class="smt">・・・・・ 今回やりたい事はPCで画像アップロードしたものを携帯サイト(サイズ制限ありますよね)で表示というものなのですが、画像処理ソフトなどを使用せず例えばデジカメで撮った画像をそのままアップロードしても表示するということは可能なのでしょうか?GDなどを使うのでしょうか?それとも最初から携帯などで撮った小さいサイズの画像をアップロードした方が良いのでしょうか?どなたかアドバイスお願いいたします。

  • PHP
  • 回答数4
  • ありがとう数1

みんなの回答

  • umota
  • ベストアンサー率46% (150/324)
回答No.4

> どんなサイズでも可能なんですか? アップロードファイルサイズは php.ini の設定値(規定では 2MB)によります。 私は php.ini を upload_max_filesize = 5M にしています。 3-5MB 位なら問題なく動作しています。(それ以上は試していないのでわかりません) マニュアル V.機能 38章 ファイルアップロードの処理 も参照すると良いでしょう。 縮小すれば当然、ファイルサイズは小さくなりますが 意図的にもっとファイルサイズを小さくするならば imagejpeg 関数等の quality(品質)を下げます。(これもマニュアルを参照)

  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.3

リサイズというのはwidthとheightという意味ですか?  ImageCopyResized(         コピー先イメージ,         コピー元イメージ,         コピー先X座標,         コピー先Y座標,         コピー元X座標,         コピー元Y座標,         コピー先幅, ←ここと         コピー先高さ,←ここで指定できます。         コピー元幅,         コピー元高さ) 重さも可変されているのですか?  重さと言うのは...  画像データサイズの事でしたら、当然に小さくなります。 表示時にサーバに負担をかけないようにするには、アップロード時に元サイズとリサイズデータをサーバに保存しているのですか?表示する時にimage関数でリサイズしていてはやはり負担がかかってしまうんですか?  ・表示する不特定多数の方のアクセス回数>画像アップロード回数  当然に上の式が成り立ちますので、アップロード時にリサイズした  方が、一回ですみますね。  サーバの容量が少ないのであれば別ですが。

  • umota
  • ベストアンサー率46% (150/324)
回答No.2

私はイメージ関数でサムネイル(縮小)を作製しています。 関数は phpマニュアルを参照してください。 スクリプトは http://www.ysd.bne.jp/linux/album/script6.html#imageadd が参考になると思います。

参考URL:
http://www.php.net/download-docs.php, http://www.ysd.bne.jp/linux/album/script6.html#imageadd
masamasu
質問者

補足

ご回答、ありがとうございます。参考にさせていただきます。 その他色々image関数を調べてみました。image関数は使用したことがないのでこんなご質問でお恥ずかしいのですが、ImageCopyResampled、ImageCopyResizedなどimage関数にはいろいろありますが、サイズを変更した場合widthとheightパーセントの変更ができることはわかったのですが重さ(サイズ)も一緒に変更されているのですか?また、デジカメで撮った大きなサイズも携帯サイズに表示できるようにはなるみたいですが、その場合どんなサイズでも可能なんですか?いまいち理解ができず、困っています。

  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.1

参考までですが、私の場合は、GDを使ってリサイズしています。 私の場合は画像アップロード後、元のサイズとリサイズ後のサイズと複数保存して、表示時に出来るだけサーバに負担を掛けないようにしています

masamasu
質問者

補足

ご回答ありがとうございます。わからないことばかりですみません。image関数でリサイズできることまでわかりました。image関数を使用したことがないのでイメージがわかないのですが、リサイズというのはwidthとheightという意味ですか?重さも可変されているのですか?表示時にサーバに負担をかけないようにするには、アップロード時に元サイズとリサイズデータをサーバに保存しているのですか?表示する時にimage関数でリサイズしていてはやはり負担がかかってしまうんですか?表示したいのは携帯サイトなんです。

関連するQ&A

  • PHP 画像アップロード 重複防止

    画像、ファイルをアップロードできるフォームを作成しています。 ---------------------- フォーム <FORM NAME="objform" action="yes.php" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000"> <INPUT TYPE="file" NAME="img1" SIZE="40"><BR> <INPUT TYPE="submit" NAME="submit" VALUE="アップロードする!!"> </FORM> ーーーーーーーーーーーーーーーーーーーー yes.phpの中身 $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename); -------------------------- これでphoto のフォルダに格納されるようにしているのですが、 もし、同じファイル名でアップされた場合上書きされてしまいます。 IDをつけるか、もしくはその他の方法でファイル名が重複されないような設定にするにはどうすればよいでしょうか。 現在PHP勉強中です。 初歩的なことかもしれませんが、 よくわからないのでアドバイスを頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • VBAでアップロード

    ホームページ作成をしているのですが、ローカルにあるhtmlファイルをvbaでアップロードしたいのですが やり方がよくわかりません。 ソースは *************************************************************** <TABLE border=0 cellSpacing=0 cellPadding=0 width=650> <TBODY> <TR vAlign=top> <TD width="50%"> <TABLE style="FONT-SIZE: 12px" border=0 cellSpacing=1 cellPadding=3 width=323 bgColor=#ff6600> <FORM encType=multipart/form-data method=post action=/tok2_ftp/index.php> <INPUT name=act value=upload type=hidden> <INPUT name=MAX_FILE_SIZE value=300000 type=hidden> <INPUT name=dirname value=/ type=hidden> <TBODY> <TR align=center> <TD bgColor=#ffcc66>ファイルアップロード</TD></TR> <TR align=center> <TD class=line-height1 bgColor=#ffffff> <BR>アップロード可能なサイズは、1ファイル300kbまでです。<BR> <FONT color=#ff0000>※既に同じファイル名が存在する場合は上書きされます。</FONT> <BR><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file> <BR><BR><INPUT style="WIDTH: 150px" value=アップロード type=submit> <BR><BR></TD></TR></FORM></TBODY></TABLE></TD> *************************************************************** このような感じなのですが、 VBAで objIE.document.all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない objIE.document.forms(0).all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない 'objIE.document.forms(0)("upfile[]").Value = "test" 'エラー 'objIE.document.all("upfile[]").Value = "test" 'エラー objIE.document.forms(0).submit '押せる こんな事をやってみましたが、値を入れる事ができません。 解決方法を教えてください。

  • docomoでの画像アップロードについてです。

    docomoでの画像アップロードについてです。 PCと同じ、fileタグを使用し、携帯で画像をアップロードしたいのですが、 画像アップロードできる画像と出来ない画像があります。 (絵文字画像ならできるが、写メデータだとできない) アップロード出来ない場合、$_FILES及び$_POSTのデータが渡りません。 因みに同じHTML及びPHPのソースでsoftbankだと出来ました。 容量の問題かと思い、 ini_set("upload_max_filesize","2M"); ini_set("post_max_size","3M"); ini_set('max_input_time',"600"); ini_set('max_execution_time',"600"); なども設定しましたが、変わらないです。 どなたかヒントでも頂ければと思います。 宜しくお願いします。 因みにHTMLのソースは下記です。 <form action="スクリプトURL" method="POST" enctype="multipart/form-data"> <input name="MAX_FILE_SIZE" type="hidden" value="1000000"> <input type="FILE" name="photo"> <INPUT type="submit" name="conf" value="アップロード"> </form>

    • 締切済み
    • PHP
  • WEBサイトからファイルマネージャへ直接画像をアップロードするには

    はじめまして。 自分のサイトのページからファイル参照をし、 [<FORM method="POST" enctype="multipart/form-data" action="img_upload.php"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="65536"> 画像のファイル名を入力してください(最大64KByte) <INPUT size="30" type="file" name="upfile"><BR> <BR> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="リセット"> </FORM>] 自分の借りているレンタルサーバにあるファイルマネージャへ直接画像をアップし、 違うページで表示させたいのですが可能でしょうか。 サンプルソースや参考になるサイトを教えていただけるとありがたいです。 どうかよろしくお願いいたします。

  • PHP 画像添付フォームに関しての質問です。

    PHP 画像添付フォームに関しての質問です。 http://okwave.jp/qa/q4891926.html 以前質問させて頂いた内容でフォームを作成しています。 申込html→finish.php の場合はうまくいきます。 申込html→確認→finish.php にするとうまくいきません。 可能であれば、確認画面でアップした画像を表示できればと思っております。 何かアドバイスして頂けると助かります。 申込html <form method="post" action="kakunin.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000"> <input type="hidden" name="upfile" value="%%upfile%%"> <input name="upfile" id="upfile" type="file" size="50" value="%%upfile%%"> 確認html <form method="post" action="finish.php"> <td class="border5px-fff">%%upfile%%<input type="hidden" name="upfile" value=""></td> finish.php $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 //ファイルを指定 $id_file = "id.dat"; //ファイルを開く $fp = fopen($id_file,"r"); $id = fgets($fp); fclose($fp); //ファイルの数字に1を足します。 $id = $id + 1; $fp = fopen($id_file,"w"); //保存します。 fputs($fp, $id); fclose($fp); //名前の前に番号を追記します。 //$filename = 'ID_'.$id.'_'.$filename; //番号のみ $filename = $id.'.jpg'; move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename);

    • ベストアンサー
    • PHP
  • PHPでフォームから任意の画像削除方法

    複数画像がアップロード出来るフォームがあります。 そのフォームはユーザがアップした画像は、フォームにアクセスする度に表示されます。 <form action="upload.php" method="post" enctype="multipart/form-data"> ファイル:<br /> <input type="file" name="upfile" size="30" /><br /> <input type="reset" name="resetfile" value="削除" /><br /> <input type="file" name="upfile" size="30" /><br /> <input type="reset" name="resetfile" value="削除" /><br /> <br /> <input type="submit" value="アップロード" /> </form> 2つの画像をサーバにアップした段階で 2つ目の削除ボタンを押した時に、2つ目の画像だけを削除したいのですが、良い方法が思いつきません。 代替案はチェックボックスですが、デザインが崩れるので避けたいと思っています。 または、javascriptで出来るようですが、あまり得意でないので、出来れば避けたいと思っています。 良い方法があれば、ご教授お願いします。

    • ベストアンサー
    • PHP
  • 画像ファイルアップロード

    PHP初心者です。以下のスクリプトを参考書を参考に記述しました。リンクでtmpfileが表示されるのはわかるのですが、このファイルに画像を表示するにはどうしたらいいですか?<img src="">で表示されなかったので、他に表示方法はあるのですか?また画像を表示したときにimagecopyresampled();を使ってサイズを設定したいと思っています。 <?php print <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>ファイルのアップロード</title> </head> <body> <p>ファイルのアップロード</p> <form method="post" enctype="multipart/form-data" action="index.php"> <input type="hidden" name="maxfilesize" value="10000" /> アップする写真データ<br> <input size="30" type="file" name="upfile" /><br /> <input type="submit" name="submit" value="送信" /> <input type="reset" name="reset" valuie="リセット" /> </form> HTML; if($submit !=""){ if($submit == "none"){ print"ファイルのアップロードができませんでした。"; exit; } copy($upfile,"tmpfile.txt"); print"アップロードされたファイルの情報<br>"; print"ファイル名:$upfile_name<br>"; print"ファイルサイズ:$up_size<br>"; print"ファイルタイプ:$up_type<br>"; print"<a href=\"tmpfile\">ファイルへリンク</a><br>"; } print <<<HTML </body> </html> HTML; ?>

    • ベストアンサー
    • PHP
  • php ファイルアップロード サイズ設定どうしたらいい??

    以下のphpファイルアップロードプログラムを書いたが、 ファイルサイズ5MBを超えるとアップロードできなくなることに困っています!! Upload_max_filesizeとかあるようですが、設定はわかりません。 まったくの新米ですので、教えてください。 Html部: <form action="upload.php" form method="post" enctype="multipart/form-data"> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="file" name="uploadfile[]" size="75"> </p> <p> <input type="submit" name="submit" value="- Upload -"> </p> </form> php部: <?php // 実行ボタンが押された時 if (isset($_POST["submit"])) { for ($i = 0; $i < 10; $i++) { $movetofile = "files/" . $_FILES["uploadfile"]["name"][$i]; move_uploaded_file( $_FILES["uploadfile"]["tmp_name"][$i], $movetofile ); } echo "Thank you very much for your uploading."; } ?>

    • ベストアンサー
    • PHP
  • PHP MySqlでの複数画像アップロード

    ご質問させていただきます。 複数画像をアップロードするには以下のようなかたちになると思いますが、 画像ファイルを保存するところまでは出来たのですが、同時に画像ファイル名をDBに登録出来ればと考えています。 以下の場合、nameが同一になるので3つのカラム(img1,img2,img3)にそれぞれ登録するにはどのようにすればいいでしょうか? <input type="file" name="uploadfile[]" /> <input type="file" name="uploadfile[]" /> <input type="file" name="uploadfile[]" />

    • ベストアンサー
    • MySQL
  • 画像アップ

    php初心者です 簡単な画像アップロードを付けたいと思っています それでアップだけはなんとかできたのですが、もう少し機能を付けたいです 付けたい機能は 1.拡張子を調べて限定したい。gif、jpg、pngの三つを許可したい 2.画像の横と縦の幅が指定した幅より大きければ、指定した幅まで縦横比維持で縮小 100*100 3.もう一つのディレクトリに、小さいサムネイルを作りたい。大きさは32*32です 4.拡張子はそのままにして画像の名前をリネームしたいです よろしくお願いします(_ _ <?php $img_name = $_FILES["upfile"]["name"]; $img_size = $_FILES["upfile"]["size"]; $img_type = $_FILES["upfile"]["type"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 50000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type"; if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0604); print $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { print "ファイルをアップロードできません。"; } } else { print "ファイルが選択されていません。"; } }else{ $size_error = "サイズが大きすぎます"; } } ?> <html> <head> <title>画像アップロード</title> </head> <body> <form name="form" action="" method="POST" ENCTYPE="MULTIPART/FORM-DATA"> <input name="upfile" type="file" size="40"> <input name="up" type="submit" value="アップロード"><hr> </form> <?php print($size_error); ?><?php print($img_message); ?> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう