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