ここでは、答えを見つけるのに苦労している小さな問題のようなものです。
私は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 関数は本質的に画像を適切にスケーリングすると考えました。
私は自分が間違っていることを理解できないようです。助けてくれてありがとう!