私は、ユーザーがオブジェクトに任意の図形を描画し、それを画像(pngファイル)として保存できるようにするFirefoxプラグインを構築しています。
var $ = getJQueryOb();
var canvas = '<canvas id="canvas" width="1024" height="1024" style="position:absolute; top:0px; left:0px;"></canvas>';
var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser");
var mainDoc = currentWindow.getBrowser().contentDocument;
var cObj = $(canvas).appendTo(mainDoc.body);
$(cObj).bind('mousemove', handlePenDraw);
これを使って、キャンバスに描くことができます。ただし、画像を保存するときは、キャンバス全体を保存するのではなく、保存するために作成された画像の周囲の「外接する長方形」だけを保存します。
これを達成する方法はありますか?私が現在行っているのは、キャンバスをそのまま保存することです。
var $ = getJQueryOb();
var canvas = $('#canvas')[0];
var dURL = canvas.toDataURL("image/png");
saveToFile(dURL, "image-file.png");