2
我正在構建一個firefox插件,它允許用戶在對象上繪製任意圖形並將其保存爲圖像(png文件)。getDataURL部分畫布對象
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");
哇!非常感謝! getImageData()是我一直在尋找的func! – Kapil 2010-07-23 08:59:47
您的解決方案運行良好。不過,我有一個後續問題。我注意到putImageData()方法需要更長的時間才能將圖像添加到畫布。相反,有沒有從imageData本身提取dataURL的方法?這樣我就可以減少製作圖像所需的時間。有任何想法嗎?如果允許,我會很好地構建base64字符串。 – Kapil 2010-07-23 12:59:32
我想你可以嘗試將ImageData轉換爲base64字符串,雖然這可能比使用putImageData和getDataURL需要更長的時間。 – Castrohenge 2010-07-23 13:44:16