1

私は現在、アップロードされた画像を受け取り、サイズを変更し、そのデータ uri をフォーム値に渡してサーバーに送信するためのキャンバス html5 要素をセットアップしています。これはコンピュータでは問題なく動作しますが、Safari を介して iPhone でテストしたときに問題が発生しました。

新しい IOS 6.0.1 アップデートでは、画像をアップロードするときに「写真またはビデオを撮る」を選択できますが、iPhone からアップロードすると 2 つの問題が発生します (テストするのに便利な iPad がありません :( )...

1) 画像の上部 1/3 だけが残っているため、画像がつぶれているか、「未完成」のように見えます。

  • context.scale() 関数を削除したところ、これらの問題は発生しませんでした。iPhone デバイスでのスケーリングに処理上の制限はありますか? 単純な context.scale(0.5, 0.5) は機能していないようです。

2) 画像が回転します (この問題は context.scale() が削除されても持続します)。

  • 画像が向きデータの一部を保持している可能性があることを読みましたが、それを削除するにはどうすればよいですか?

これらの問題は、「写真を撮る」か、iPhone で撮った画像を使用する場合にのみ発生するようです。PC から iPhone にダウンロードした画像を使用する場合、1) と 2) のどちらの問題も問題ないようです。また、iPhone で撮影した写真をパソコンに転送し、パソコンからアップロードする場合も問題ないようです。

問題1については、同じ画像が私のコンピューター(問題なし)とiPhone(問題)で使用されているため、画像をメールで送信するときにiPhoneが何らかの方法で圧縮しない限り、context.scale()のiPhoneの制限であると思います私のコンピューターで使用しても問題ない方向データを削除します。ご覧のとおり、私はかなり混乱しています!助けてくれてありがとう!

キャンバスのサイズを変更するための私のコード...

        reader.onload = function(e) {
      preview.html('<img id="scream" src="' + e.target.result + '" ' + (preview.css('max-height') != 'none' ? 'style="max-height: ' + preview.css('max-height') + ';"' : '') + ' />')
      element.addClass('fileupload-exists').removeClass('fileupload-new')

      var canvas = document.createElement("canvas"),
          context = canvas.getContext("2d"),
          image = new Image();

      image.onload = function () {
          var img = this,
              width = img.width,
              height = img.height;

          canvas.width = 300;
          canvas.height = 300;

          context.scale(0.25, 0.25);
          context.drawImage(img, 0, 0);
          var base64 = canvas.toDataURL();
          //console.log(base64);

          //$('form_6').val(base64);

          document.body.appendChild(canvas);
      };
      image.src = e.target.result;

    }
4

0 に答える 0