• 締切済み

iphone FileAPI の仕様について

iphoneでファイルを選択して、 phpで受け取り、画像の大きさによってはエラーを表示するような処理を作っています。 そこで、iphone FileAPIの仕様について御存知であればご教授願いたいです。 <input type="file">で 16MBの画像を選択して、確認ボタンを押すと phpの$_FILE['size'] = 1492219 ※1.42MB とリサイズされます。 PCだと問題ないのですが、 iphoneだと画像がリサイズされます。

  • prr4e
  • お礼率48% (66/136)

みんなの回答

回答No.2

No.1です。 > 一応JPGですが、まさに縮小されちゃうんですね。 ちょっと認識が違うので再確認してみたところ、 確かにJPEGファイルでも、アップロード時に 再圧縮されて若干サイズが小さくなるようです。 具体的には、4000×3000ピクセルの5.18MBのJPEGファイルが、 アップロード後は4.84MBになりました。 おそらく、これは元々複雑な風景で圧縮効果の出にくい画像 なのだと思います。 16MBのJPEGファイルが1.6MBになったというのは、 たぶん元の画像を、低い圧縮率でJPEG生成し直すことで ファイルサイズを水増しした画像ではないかと思います。 (一般的な圧縮率で再度JPEG生成したら元のサイズに戻る) 複雑な風景写真を何枚か合成して大きなサイズにし、 それを一般的な圧縮率のJPEGファイルにすれば、 おそらくiPhoneからアップロードして10MB程度になる JPEGファイルもできると思います。 まぁ、そこまでエラーテスト用の画像作成を頑張る必要が あるかという話はありますが。

回答No.1

この件は、以前私も少し調べたことあるんですが、 http://me.hateblo.jp/entry/2013/10/24/213523 にもある通り、もし16MBの画像というのがPNG形式 であれば、勝手にJPEG形式に変換されてアップロード されます。この場合、16MBくらいのPNGファイルは、 JPEGに変換すると1.5MBくらいになってアップロード されます。 記事ではiOS7は未確認と書いていますが、iOS7でも 改善されていません。Chrome for iOSを使っても同じです。 (JPEG形式は不可逆圧縮されて画像品質が悪くなるので 勝手なことをしないで欲しいところです。) 16MBのJPEG形式画像であれば、そのままアップロード されると思いますが、JPEG形式は4000×3000ピクセルの 写真でも2~5MBくらいにしかなりません。 画像生成ツールを使って無理やり大きなJPEGファイルを 作れば、そういうテストができると思います。

prr4e
質問者

お礼

返答ありがとうございます。 ものすごく助かりました。 iOSのバグが仕様みたいですね。 ありがとうございます。 一応JPGですが、まさに縮小されちゃうんですね。

関連するQ&A

  • iphoneから自作PHP画像掲示板に写真が添付できない。

    iphoneから自作PHP画像掲示板に写真が添付できない。 iphoneから画像掲示板に写真を添付したいのですが、<INPUT TYPE="file" NAME="upfile">でつくった ボタンそのものが黒くなって(押された状態のように)使うことができません。 airiphoneだとできるのですが・・ 改善するにはどうしたらよいでしょうか?

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

    環境: OS/Vine Linux 3.2 Apache 2.0.55 mod_ssl 2.0.55 OpenSSL 0.9.7d PHP 5.1.2 上記の環境で簡単なファイルアップ処理をPHPで 試みようと思っていますが、できなく困っています。 HTMLからフォームを使って ファイルを選択した後に、「Send File」ボタンを 押してもまずファイルサイズが取得できません。 print_r($_FILES)を確認すると、 「Array ( [userfile] => Array ( [name] => test.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) 」とクライアントマシンの元ファイル名とエラーコードのみ表示されます。 ちなみにupload_max_filesizeは2Mで設定しています。 なので、MAX_FILE_SIZEは2Mになりますよね?? どなたかご教授下さい。よろしくお願いいたします。 ソース: 【html】 <form enctype="multipart/form-data" action="b.php" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> 【php】 <?php print_r($_FILES); //続く....... ?>

    • ベストアンサー
    • PHP
  • iphoneで撮影した画像をリサイズしたい

    こんにちは。 iphone4Sユーザーです。 facebookに、撮影した画像をUPしたいのですが、大きすぎるため リサイズしたいと思います。 simple resizeを使用してみたのですが、画像サイズを小さく(640×480)したら かなり画質が落ちました。 容量を見ると0.121MBでした。 友人の綺麗な画像のサイズを見ると、サイズは640×640だけど容量は0.945MBほど あります。サイズは小さく容量を大きくしたいのですが、どうしたらよいのでしょうか。

  • [html]<input type="file">タグの参照ボタンを画像ボタンにした時のsubmitの方法

    なにから書けばいいのか難しいのですが… とりあえず、先日次のような質問をしました。 【[html] <input type="file">タグの参照ボタンを画像ボタンにしたい。】 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1244273 その中のやり取りにあるように、参照ボタンを画像にすることはできたのですが、実際に参照ボタンを画像にしてからsubmitすることができなくなってしまいました… いろいろ調べてみましたら、どうやら<input type="file">をjavascript等でclickして値を入れると、セキュリティ上submitできないみたいなのです。実際そのフォームがsubmitに対して無反応になります。javascriptで強引にsubmitしようとすると"アクセスが拒否されました"のエラーがでます。 なんかごちゃごちゃになってきた… 今自分が実現したいのは、以下の2つです。 1.<input type="file">の参照ボタンを画像にしたい。 2.1を実現後そのformをsubmitしたい。 どなたか実現している方がいましたら、ご教授ください。 IE6で動けば問題ないです。 すみませんコードは文字制限に引っかかって載せれなかったです…

    • ベストアンサー
    • HTML
  • onclickイベントで、PHPの関数をコール

    下記のようなPHPスクリプトで、ボタンが押された時の、onclickイベントで<?php upload_file() ?>として PHPのupload_file() 関数をコールしてるのですが、画像ファイルがアップできません。 どこが間違いなのか、教えていただけますか。 --------------------------------------------------------------------------------- <form name="form2" method="POST" enctype="multipart/form-data" action="bbs.php"> <!-- ファイル参照フォームを表示する --> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="upfile" tabindex="6"> <input type="button" value="画像を送信" tabindex="7" onclick="<?php upload_file() ?>"> </form>

    • 締切済み
    • PHP
  • 大容量のファイルアップロードについて

    どうしても分からず、質問いたします。 自宅サーバを構築しPHPのブラウザによる大容量ファイルアップロードが可能にしようとしています。 (2GBくらいのファイルでもアップロードしたい) しかし、外側からアップロードを行う際、数十MBまでなら可能ですが、それ以上になると 途中までアップロード処理しているようですが、ページが表示されませんのエラーや、アップロードの処理が中断してしまいます。 ご教授お願い致します。 ■フォーム側の設定(MAX_FILE_SIZE値) <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2048000000"> ■php.iniの主な変更箇所 memory_limit = -1 max_input_time = 6000 max_execution_time = 60000 upload_max_filesize = 2000M post_max_size = 2000M ■以下サーバの環境です。 OS:Windows2000 SP4 IIS5.0 メモリ:512MB PHP:5.2.5 よろしくお願い致します

    • 締切済み
    • 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
  • input TYPE="FILE"で取得した画像を表示

    お世話になります。 htmlのタグにinput type="file"というのがありローカルの画像を選択できるエクスプローラが起動するというボタンなのですが、それで選択した画像ファイルをサーバ処理を行うことなくブラウザに表示させたいのです、こんなことが可能なのでしょうか? なにかサンプル等ご存知の方宜しくお願いします。

    • ベストアンサー
    • HTML
  • iPhoneでのメールフォームについて質問です!

    iPhoneでのメールフォームについて質問です! input type="file"がiPhoneの場合disableになってしまうようなのですが これを使用可能にする方法を探しております。 どなたかご存知の方いらっしゃいましたらご教授お願い致します!

  • 画像アップロードについて

    いつもお世話になっております。 画像アップロード機能を作成し、問題なくアップロードを行うことができたのですが、 ある一定サイズ(約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

専門家に質問してみよう