在PhoneGap中为Iphone4与Iphone4s以奇数比例绘制的画布图像

时间:2013-05-07 15:28:07

标签: javascript cordova canvas html5-canvas pixel

这里有一个小问题,我一直在努力寻找答案。

我正在使用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时,图像以正确的宽度绘制出来,但它是一个超级压扁的图像,占据了画布的顶部条纹。

两个设备分别注册了screen.height和screen.width分别为480和320,window.devicePixelRatio为2.

我认为drawImage函数会固有地适当缩放图像。

我似乎无法弄清楚我做错了什么。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

  

“我意识到iphone4和iphone4s之间的图像在像素方面的大小不同,但至少是相同的比例。”

iPhone 4和iPhone 4s具有完全相同的屏幕尺寸和像素比率以及像素数等。它们基本相同。如果你画的是不同的,那就是你的问题。

iPhone 3gs及以下版本均配有非视网膜显示屏。 iPhone 5有视网膜,但更高。

如果情况并非如此,那么它就是你代码中的内容(这意味着除非你发布它,否则我们无能为力)。

我非常怀疑问题出在Phonegap本身。