画像読み込みのところを修正しました。
【修正前】
// 画像ファイルをcanvasへ読み込む
var img = new Image();
img.src = url;
// canvasサイズを画像サイズに合わせる。
cvs.attr("width", img.width).attr("height", img.height);
ctx.drawImage(img, 0, 0);
【修正後】
// 画像ファイルをcanvasへ読み込む
var img = new Image();
img.src = url;
// 画像のロードが終わってからcanvasへ読み込む
img.onload = function(){
// canvasサイズを画像サイズに合わせる。
cvs.attr("width", img.width).attr("height", img.height);
ctx.drawImage(img, 0, 0);
};
修正前は、new Image()でイメージオブジェクトを作成し、
img.srcに画像のURLを渡すと同時にcanvasへ画像ロードも行っていました。
しかし、イメージオブジェクトは画像が読み込まれた後じゃないと機能しない。
ということで…
imgのloadイベント発生時にcanvasのサイズ決めと画像読込を行うように変更しました。