Canvas 克隆画布并替换覆盖图像

Canvas 克隆画布并替换覆盖图像,canvas,fabricjs,Canvas,Fabricjs,我试图克隆一个画布对象,然后用另一个替换克隆画布上的覆盖图像。以下是我到目前为止所做的尝试: _canvas.clone(function(cloneCanvas) { cloneCanvas.scale = _canvas.scale; cloneCanvas = self.pdcZoom.resetZoomBeforeSave(cloneCanvas); var src = config.media_url + _sidesConfig[tester]["filename"];

我试图克隆一个画布对象,然后用另一个替换克隆画布上的覆盖图像。以下是我到目前为止所做的尝试:

_canvas.clone(function(cloneCanvas) {
  cloneCanvas.scale = _canvas.scale;
  cloneCanvas = self.pdcZoom.resetZoomBeforeSave(cloneCanvas);
  var src = config.media_url + _sidesConfig[tester]["filename"];
  cloneCanvas.overlayImage = null;
  fabric.Image.fromURL(src, function(img) {
    img.set({
      width: parseFloat(_canvas.width),
      height: parseFloat(_canvas.height),
      originX: 'left',
      originY: 'top',
      top: 0,
      left: 0,
      alignX: options.alignX || 'none', // none, mid, min, max
      alignY: options.alignY || 'none',
      meetOrSlice: options.meetOrSlice || 'meet', // meet,
      isrc: src,
      object_type: 'mask',
      price: options.price || 0
    });
    cloneCanvas.setOverlayImage(img, cloneCanvas.renderAll.bind(cloneCanvas));
    //self.hideLoadingBar();
  });
});
\u canvas
是原始画布,而
cloneCanvas
是新画布。

要克隆画布,请使用,然后使用加载json

var canvas=newfabric.canvas(“c”);
var canvas1=新织物画布(“c1”);
画布。添加(新织物。圆圈)({
半径:50
}));
setOverlay('https://picsum.photos/200/300/?random",画布),;
函数setOverlay(url,can){
fabric.Image.fromURL(url,函数(img){
img.set({
scaleX:can.width/img.width,
scaleY:can.height/img.height,
excludeFromExport:true,
不透明度:0.5
})
can.setOverlayImage(img);
can.renderAll();
})
}
函数克隆(){
var json=canvas.toJSON();
canvas1.loadFromJSON(json,function(){
setOverlay('https://picsum.photos/200/400/?random",游说1),;
})
}
画布{
边框:2倍实心;
}


克隆
您有任何错误吗?我没有错误。然而,当我尝试发出警报(cloneCanvas)时,我得到null,因为我事先将其设置为null。因此,根本没有设置setoverlayImage。当我尝试只使用setOverlayImage而不将其设置为任何内容时。@Durga有什么想法吗?你想克隆一个画布,然后在另一个画布中设置吗?我想克隆画布并在克隆的画布上更改覆盖图像@杜尔加