4

例如,我有一个800x600 的,我使用添加一个图像(200 x 200)。

我在我的图像上应用了几个过滤器,我想保存它,但目前,我保存画布 800x600,我只想保存我的图片后效果。

可能吗?

4

3 回答 3

4

从最新版本(从 GitHub 下载并编译),这就是你想要的:

canvas.toDataURL(left, top, width, height);

检查问题fabric.js - 从 canvas API 的 ImageData 对象创建 Image 对象,仅用于 kangax 的评论。

于 2013-09-29T14:51:50.690 回答
3

您可以使用 FabricJS 的 canvas.toDataURL 方法,它的工作原理与 html 的 canvas.toDataURL 非常相似

var dataURL = myFabricCanvas.toDataURL();

如果您希望您的用户将他们的画布保存到他们的本地磁盘,您可以这样做:

  • 从画布创建图像。
  • 在新的浏览器窗口中打开该图像
  • 让用户右键单击并另存为图像

这是代码:

var win=window.open();
win.document.write("<img src='"+myFabricCanvas.toDataURL()+"'/>");

注意:如果您的图片托管在与 .html 不同的域上,您将收到 CORS 安全错误,并且 canvas.toDataURL 将失败。

于 2013-09-27T16:44:00.913 回答
0

尝试这个

<button class="btn btn-success" id="rasterize">Convert Image To PNG</button>


//************************canvas to png image**********
    document.getElementById('rasterize').onclick = function() {
    if (!fabric.Canvas.supports('toDataURL')) {
      alert('This browser doesn\'t provide means to serialize canvas to an image');
    }
    else {

      window.open(canvas.toDataURL('png'));
      var gh=(canvas.toDataURL('png'));+
      alert(gh);
    }
    };
    //--------------end canvas to png image-----------------------
于 2013-09-28T05:34:33.977 回答