我有一个 Fabric.js 原型,人们可以在其中将照片、文本和地图加载到画布中。完成后,我希望他们能够将画布保存为图像。我试过使用标准:
canvasURL = canvas.toDataURL();
var image = new Image();
image.src = canvas.toDataURL("image/png");
$('#canvasContainer').replaceWith(image);
但它说画布是tainted
- 我认为是因为图像(上面的方法在它只是文本时有效)。错误是:
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
我可以使用 Fabric 的内置方法保存为 SVG:
var canvasSVG = canvas.toSVG();
$('#canvasContainer').replaceWith(canvasSVG);
但我宁愿有一个PNG/JPG。有任何想法吗?
这是有关画布序列化的 Fabric.js 文档。