在nexus7上的Firefox中的Canvas转换问题

时间:2013-01-05 01:40:26

标签: android firefox html5-canvas nexus-7

var targetSize = Math.max($(window).width(), $(window).height());
var canvas = $("#canvas")[0];
canvas.setAttribute('width', $(window).width());
canvas.setAttribute('height', $(window).height());
var context = canvas.getContext("2d");

var img = new Image();   // Create new img element
img.onload = function () {
    angle = Math.PI / 4;
    context.setTransform(1, 0, 0, 1, 0, 0); //attempt to reset transform
    context.drawImage(img, 0, 0);
};
img.src = '../../Images/FloorPlans/GroundFloor.jpg'; // Set source path

此代码在我的nexus7上的firefox17上生成下面的第一张图片。原始图像没有角度,所有线条应该是南北和东西。它在Firefox和桌面上的chrome以及我的nexus7上的chrome上都能正确显示。

如果我尝试使用...“取消”图像“

        context.setTransform(1, 0, Math.tan(angle), 1, 0, 0);

我得到下面的第二个输出!我的目标平台必须是Nexus7上的FF :(

如何解决这个问题?或者这是一个firefox错误?

enter image description here

1 个答案:

答案 0 :(得分:0)

我有点解决了。

原始图像为jpg,1859px * 1568px~501kb。

我将其调整为50%并且有效!然后我再回到全尺寸图像(仍然无法正常工作),然后一次调整5%。所有图像都失败了,直到我达到原始尺寸的75%(1394px * 1176px~342kb)才能完美运行!

因此,问题是图像大小或文件大小。

快乐狩猎!

<强>更新<!/强>

感谢Edward Falk的评论,我们有一个明确的答案。是的,剃掉图像宽度的单个像素(从而使宽度为偶数个像素)完全解决了这个问题。

Firefox画布要求(某些?)图像具有均匀的像素宽度和高度,否则它们可能无法正确渲染。