Fabric.js 合并多个 Canvas JSON(或)SVG

Posted

技术标签:

【中文标题】Fabric.js 合并多个 Canvas JSON(或)SVG【英文标题】:Fabric.js Merge Multiple Canvas JSON ( or ) SVG 【发布时间】:2017-04-04 22:51:21 【问题描述】:

是否可以合并多个画布 JSON(或)SVG 文件。? 示例代码:

var canvas, leftcanvas, rightcanvas, ctx, activeObject, text = '';
canvas = new fabric.Canvas('canvas');
ctx = canvas.getContext('2d');
text = new fabric.Text('canvas', 
    left: 50,
  top: 50,
  fill: 'red',
  fontFamily : 'Courier New',
);
canvas.add(text).renderAll().setActiveObject(text);

leftcanvas = new fabric.Canvas('leftcanvas');
var ctx1 = leftcanvas.getContext('2d');
var text = new fabric.Text('leftcanvas', 
    left: 50,
  top: 50,
  fill: 'red',
  fontFamily : 'Courier New',
);
leftcanvas.add(text).renderAll().setActiveObject(text);

rightcanvas = new fabric.Canvas('rightcanvas');
var ctx2 = leftcanvas.getContext('2d');
var text = new fabric.Text('rightcanvas', 
    left: 50,
  top: 50,
  fill: 'red',
  fontFamily : 'Courier New',
);
rightcanvas.add(text).renderAll().setActiveObject(text);

var JSON1, JSON2, JSON3 = '';
JSON1 = canvas.toJSON();
JSON2 = leftcanvas.toJSON();
JSON3 = rightcanvas.toJSON();

这里我们有 3 个 json 文件。我必须合并这些文件并导入新的画布。

【问题讨论】:

嗨,您需要合并来自不同用户的这些吗?我有一个类似的问题,只是想知道你是如何解决这个问题的? 【参考方案1】:
var circle1 = new fabric.Circle(
  radius: 50,
  fill: 'red',
  left: 0
);
var circle2 = new fabric.Circle(
  radius: 50,
  fill: 'green',
  left: 100
);
var circle3 = new fabric.Circle(
  radius: 50,
  fill: 'blue',
  left: 200
);

var group = new fabric.Group([ circle1, circle2, circle3 ], 
  left: 200,
  top: 100
);

canvas.add(group);

【讨论】:

以上是关于Fabric.js 合并多个 Canvas JSON(或)SVG的主要内容,如果未能解决你的问题,请参考以下文章

canvas库fabric.js踩坑

在fabric.js中将Canvas下载为PNG,给出网络错误

将图像从计算机上传到 Fabric.JS Canvas

Html5 Canvas + fabric.js 的独立堆肥

从 JSON 加载不起作用。 Fabric.JS

Fabric.js 文本字段 - Android 问题