You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fabric.js中限制裁剪后的图像显示于矩形区域内?

解决Fabric.js中图像圆形裁剪+矩形区域限制的问题

要同时实现图像的圆形裁剪和矩形区域显示限制,需要给图像添加双重裁剪约束:一层负责将图像剪成圆形,另一层负责限制显示范围。以下是具体实现方案和代码示例:

核心思路

  1. 给图像自身设置圆形clipPath,完成圆形裁剪效果;
  2. 将图像放入fabric.Group容器,给容器设置矩形clipPath,实现超出矩形区域的内容隐藏。

完整代码示例

canvas.clear();

new fabric.Image.fromURL('https://images.pexels.com/photos/17041911/pexels-photo-17041911.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2', function(img) {
  img.scaleToWidth(300);
  
  // 可视化参考矩形(可选,仅用于显示区域边界)
  const containerRect = new fabric.Rect({
    left: 100, 
    top: 100, 
    width: 600,  
    height: 300,
    fill: 'green',
    opacity: 0.2,
    selectable: false
  });

  // 圆形裁剪路径:尺寸匹配缩放后的图像
  const circleClip = new fabric.Circle({
    radius: 150,
    originX: "center",
    originY: "center"
  });

  // 给图像设置圆形裁剪
  img.set("clipPath", circleClip);
  
  // 创建包裹图像的组,用矩形裁剪限制显示区域
  const imageGroup = new fabric.Group([img], {
    left: 100,
    top: 100,
    clipPath: new fabric.Rect({
      width: 600,
      height: 300,
      originX: 'left',
      originY: 'top'
    })
  });

  canvas.add(containerRect);
  canvas.add(imageGroup);
  canvas.renderAll();
});

关键细节说明

  • 裁剪路径定位:圆形裁剪的originX/originY设为center,确保和图像中心对齐;矩形裁剪的原点设为left/top,和组的定位匹配,避免偏移。
  • 组的作用:通过Group的clipPath统一限制图像的显示范围,同时不破坏图像自身的圆形裁剪效果。
  • 交互调整:如果需要拖动图像,可保持Group的可选中状态(默认支持),或单独给图像绑定拖动事件。

内容的提问来源于stack exchange,提问作者Alejandro Fuentes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:09:57