7

この問題の HTMLテスト ページはこちらにあります。何らかの理由で、MobileSafari はImage.width/height1700 ピクセルを超える画像のプロパティを半分の値として報告しています。つまりwidth、たとえば JPG のプロパティは 2000 ですが、MobileSafari JavaScript はそれを 1000 と報告します。幅 1700px の画像で同じコードを試すと、正しい幅が得られます。

私が行ったテストでは、2 つの画像 (異なるサイズの同じ画像) を読み込み、JavaScript のサイズ値を表示します。私が試した:

  • Mac OS X 10.6.8 の Chrome 22、Safari 5.1.7、Firefox 15.0.1 (正しいサイズ)
  • iOS シミュレーター 4.3 SDK 3.2 (サイズが正しくありません)
  • iOS 5.1 を搭載した iPad 2 (サイズが正しくありません)
  • iOS 5.1 を搭載した iPhone 4S (サイズが正しくありません)

なぜこれが起こっているのですか?どこかに設定がありませんか?一部の画像では機能するのに、他の画像では機能しないのはなぜですか?

テストはこちら: http://still-island-1941.herokuapp.com/sizetest.html

これは JavaScript コードです。

    var imgBig, imgSmall;

    function init() {
        imgBig = new Image();
        imgBig.onload = handleBig;
        imgBig.src = "/images/size.jpg";
        imgSmall = new Image();
        imgSmall.onload = handleSmall;
        imgSmall.src = "/images/test1.jpg";
        document.getElementById("browser").innerHTML = navigator.userAgent;
    }

    function handleBig() {
        document.getElementById("dimensionsBig").innerHTML = imgBig.width + "x" + imgBig.height;
        document.getElementById("testBig").src = imgBig.src;
    }

    function handleSmall() {
        document.getElementById("dimensionsSmall").innerHTML = imgSmall.width + "x" + imgSmall.height;
        document.getElementById("testSmall").src = imgSmall.src;
    }

これは HTML コードです。

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/>

    <title>MobileSafari image dimensions test</title>
</head>
<body onload="init()">
    <p>your browser: <strong><span id="browser"></span></strong></p>
    <p>big image dimensions: <strong><span id="dimensionsSmall"></span></strong> (should be 1700x1134)</p>
    <img id="testSmall" />
    <p>small image dimensions: <strong><span id="dimensionsBig"></span></strong> (should be 2000x1334)</p>
    <img id="testBig" />
</body>
</html>
4

1 に答える 1

6

はい、サイズと重量に制限があります。

iOS で利用可能なメモリのため、処理できるリソースの数には制限があります。

デコードされた GIF、PNG、および TIFF 画像の最大サイズは、RAM が 256 MB 未満のデバイスでは 3 メガピクセル、RAM が 256 MB 以上のデバイスでは 5 メガピクセルです。つまり、RAM が 256 MB 未満のデバイスでは、幅 * 高さ ≤ 3 * 1024 * 1024であることを確認してください。デコードされたサイズは、イメージのエンコードされたサイズよりもはるかに大きいことに注意してください。

JPEGの最大デコードイメージ サイズは、サブサンプリングを使用して 32 メガピクセルです。サブサンプリングにより、JPEG 画像は最大 32 メガピクセルになる可能性があります。これにより、JPEG 画像は、ピクセル数の 16 分の 1 のサイズにデコードできます。2 メガピクセルを超える JPEG 画像はサブサンプリングされます。つまり、縮小サイズにデコードされます。JPEG サブサンプリングにより、ユーザーは最新のデジタル カメラからの画像を表示できます。

canvas 要素の最大サイズは、RAM が 256 MB 未満のデバイスでは 3 メガピクセル、RAM が 256 MB 以上のデバイスでは 5 メガピクセルです。指定されていない場合、キャンバス オブジェクトの高さと幅は 150 x 300 ピクセルです。

役立つリンク:

乾杯

于 2012-10-05T14:58:19.603 に答える