2010-05-20 6 views
0

Après un certain débogage épuisante, je pense avoir trouvé un bug dans la mise en œuvre de l'iPad Safari de canvas.drawImage(). Plus précisément, cette surcharge:Bug dans l'application html5 canvas drawimage() de l'iPad?

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); 

Lorsque découper une image et mise à l'échelle vers le bas, il semble que Safari oublie parfois de couper l'image et échelles simplement l'image entière vers le bas. Cela arrive de manière aléatoire, mais j'ai été capable de le reproduire sur l'iPad régulièrement après avoir effacé le cache de safari. Voici le code:

<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> 

Vous pouvez exécuter here ou voir la sortie de l'iPad here.

Ce bug ne semble pas exister sur un autre navigateur, y compris Safari de bureau. Il semble aussi disparaître si vous actualisez la page sur l'iPad.

que je fais quelque chose de mal avec drawImage()?

Quelqu'un peut-il comprendre pourquoi ce qui se passe, et s'il y a des valeurs spécifiques que je ne pouvais tout simplement éviter de sorte qu'il ne se produise pas ... ou une autre solution de contournement?

+1

Si vous pensez que vous avez trouvé un bogue dans un logiciel, s'il vous plaît signaler au développeur (Apple, dans ce cas: http://developer.apple.com/bugreporter/). Les bogues signalés sont des bogues corrigés. –

+0

Merci, je l'ai soumis. – Amir

Répondre

1

Ce bug semble avoir été corrigé dans iOS 4.2. Au moins, je ne le vois plus se produire.

Questions connexes