使用 Fabric.js 中的对象创建剪贴蒙版

Create a clipping mask using an object in Fabric.js

我正在尝试使用 Fabric 创建 T 恤编辑器。我在 canvas 上设置了一件衬衫作为背景图片。现在,我试图在 T 恤的中间设置一个区域作为剪贴蒙版。我只希望该区域内的对象可见。

这是我的代码:http://jsfiddle.net/mtb2p3Lx/4/

var canvas = new fabric.Canvas('c');

// set background
fabric.Image.fromURL('https://qstomizr.s3.amazonaws.com/11102-9LDAQLKA1585254870.5083.jpg', (img) => {
  canvas.setBackgroundImage(img, null, {
    originX: 'center',
    originY: 'center',
    top: canvas.getCenter().top,
    left: canvas.getCenter().left,
    stroke: 'black',
    strokeWidth: 1,
  });

  canvas.renderAll();
});


// set masking area
var area = new fabric.Rect({
  originX: 'center',
  originY: 'center',
  top: this.canvas.getCenter().top,
  left: this.canvas.getCenter().left + 10,
  width: 250,
  height: 300,
  selectable: false,
  fill: 'transparent',
  stroke: 'black',
  strokeWidth: 2,
});

canvas.add(area)


// set example rect
var rect = new fabric.Rect({
  originX: 'center',
  originY: 'center',
  top: this.canvas.getCenter().top + 50,
  left: this.canvas.getCenter().left + 150,
  height: 100,
  width: 100,
  fill: 'pink',
});

canvas.add(rect)

我尝试向 area 矩形添加剪辑路径,也尝试使用 globalCompositeOperation,但如果不牺牲背景图像,我将无法正常工作。

有没有办法让透明区域 rect 充当 canvas 中其他对象的剪切蒙版?

如您在此站点上所见https://printio.ru/tees/new_v2。为了实现背景图像,使用了 img 标签而不是 setBackgroundImage。我在这里给你举个例子

https://jsfiddle.net/RamanNikitsenka/4suna7yo/1/