0

ここでは、答えを見つけるのに苦労している小さな問題のようなものです。

私はiosネイティブカメラを使用して写真を撮り、それをphonegapに送信してjavascriptを実行しています。

画像を JavaScript に渡し、用意した小さなキャンバス要素の左側に描画します。右側には、元の変更された画像が生成されます (並べて比較)。iphone4 と iphone4s の間の画像のピクセル単位のサイズは異なりますが、少なくとも同じ比率であることがわかります。私の描画コード:

function imageLoaded(img, frontCamera) {
element = document.getElementById("canvas1");
c = element.getContext("2d");

// read the width and height of the canvas- scaled down
width = element.width; //188  94x2
height = element.height; //125

//used for side by side comparison of images
w2 = width / 2;

// stamp the image on the left of the canvas

if (frontCamera) {
    c.drawImage(img, 0, 0, 94, 125);} else{
    c.drawImage(img, 0, 0, 94, 125)}

// get all canvas pixel data
imageData = c.getImageData(0, 0, width, height);

//more stuff here
}

このコードを iphone4 で実行すると、画像は修正された画像と並んで表示されます。iPhone4s を使用すると、画像は正しい幅で引き出されますが、キャンバスの一番上のスライバーを占める非常に押しつぶされた画像です。

両方のデバイスは、window.devicePixelRatio が 2 の screen.height と screen.width をそれぞれ 480 と 320 で登録しています。

drawImage 関数は本質的に画像を適切にスケーリングすると考えました。

私は自分が間違っていることを理解できないようです。助けてくれてありがとう!

4

1 に答える 1