img 要素を受け取り、データ URL を返す関数があります。これは 7/10 回のように機能し、3/10 回空白の画像を返します。作成したデータの URL をブラウザ (chrome) で表示し、同じ画像を使用しているので、この関数が壊れた画像を返していることがわかります。誰でも理由を見つけることができますか?
function imgToDataURL(img) {
var canvas = document.createElement('canvas');
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
var c = canvas.getContext('2d');
c.drawImage(img, 0, 0);
dataurl = canvas.toDataURL();
return dataurl;
}
$(function() {
img = new Image();
img.crossOrigin = '';
img.onload = function() {
newimg = new Image();
newimg.onload = function() {
document.body.appendChild(newimg);
}
newimg.src = imgToDataURL(img);
}
img.src = 'https://somedomain.s3.amazonaws.com/someimg.png';
});
この例はほとんどの場合うまくいきますが、画像の代わりに大きな白い四角形で終わることがあります。