iPad的html5 canvas drawimage()实现中的错误?

时间:2010-05-20 23:22:42

标签: iphone ipad safari html5 canvas

经过一些艰苦的调试后,我想我在iPad Safari的canvas.drawImage()实现中发现了一个错误。特别是这种过载:

void drawImage(in HTMLImageElement image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh);

在切割图像并将其缩小时,似乎Safari有时会忘记切割图像并简单地缩小整个图像。这是随机发生的,但我已经能够在清除safari缓存后一直在iPad上重现它。这是代码:

<script>
draw = function() {
  var ctx = document.getElementById('cc').getContext('2d');  
  var timg = new Image()
  timg.onload = function() {
    ctx.fillStyle = 'rgb(100,100,100)';
    ctx.fillRect(0,0,256,256);
    ctx.drawImage(timg, 0,0, 128, 128, 0, 0, 63,63);                
    ctx.drawImage(timg, 0,0, 128, 128, 128, 0, 65,65);              
  };
  timg.src = "http://amirshimoni.com/ipadbug1/1234.jpg";
};
</script>
<body onload="draw();">
<canvas id="cc" width="256" height="128"></canvas>
</body>

您可以运行here或查看iPad here的输出。

此错误似乎不存在于任何其他浏览器上,包括桌面Safari。如果你在iPad上刷新页面,它似乎也会消失。

我对drawImage()做错了吗?

任何人都可以弄清楚为什么会发生这种情况,如果有特定的价值我可以简单地避免这样就不会发生......或者其他一些解决方法?

1 个答案:

答案 0 :(得分:1)

此错误似乎已在iOS 4.2中修复。至少,我不认为它会再发生了。