Fabric.js 实现数据标注

本文介绍了如何使用Fabric.js创建一个基础的数据标注项目,包括设置背景图、初始化矩形、实现画布缩放及删除功能。还讲解了删除元素、更新标签内容的API,以及搜索框的本地模糊匹配功能。同时,讨论了`isOff`字段在绘制中的作用,并封装了myFabric类。最后提到了一个关于Vue开发的实用技巧文档。
摘要由CSDN通过智能技术生成

创建基础项目

为了方便演示,我在初始化画布的时:

1.添加一个背景图,该背景图的尺寸和初始化的画布一样大。
2.默认渲染一个矩形。
3.右侧可以放大缩小画布以及删除选中矩形。
4.点击左侧可以修改标签内容。

-----------------------------------------------------------------------------------------------------------------------------------------------

相关API

1.删除元素的2种方法:

  • canvas.remove(...object)
  • new fabric.Control 绑定控制器删除

2.更新标签内容:

  • 获取选中的矩形框点击标签更新。
  • 选中标签后画布上绘制。

3.搜索框支持本地模糊匹配标签。4.isOff字段在代码中起到判断是否绘制的作用,fabric.Object.prototype.selectable = false 在绘制时关闭选中功能前提是未选中状态。封装myFabric类

/* eslint-disable import/no-extraneous-dependencies */
import { fabric } from 'fabric';

// 删除img
const deleteIcon ="data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C<img src="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Ebene_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='595.275px' height='595.275px' viewBox='200 215 230 470' xml:space='preserve'%3E%3Ccircle style='fill:%23F44336;' cx='299.76' cy='439.067' r='218.516'/%3E%3Cg%3E%3Crect x='267.162' y='307.978' transform='matrix(0.7071 -0.7071 0.7071 0.7071 -222.6202 340.6915)' style='fill:white;' width='65.545' height='262.18'/%3E%3Crect x='266.988' y='308.153' transform='matrix(0.7071 0.7071 -0.7071 0.7071 398.3889 -83.3116)' style='fill:white;' width='65.544' height='262.179'/%3E%3C/g%3E%3C/svg%3E"" style="margin: auto" />
const deleteIconImg = document.createElement('img');
deleteIconImg.src = deleteIcon;

class myFabric {/** * 构造函数 * @param {object} params 构造函数参数 */constructor(params) {this.canvas = null; // 画布对象this.isOff = true; // 是否开启画画模式this.downPoint = null; // 按下鼠标时的坐标this.upPoint = null; // 松开鼠标时的坐标this.label = '';this.change = null;this.initCanvas(params);}/** * 初始化画布 * @param {object} params{ imgUrl, data } 图片路径,标注数据 */initCanvas(params) {const { imgUrl, data, change } = params;this.change = change;const img = new Image();img.src = imgUrl;img.onload = () => {this.canvas = new fabric.Canvas('canvas');
fabric.js是一个强大的JavaScript库,用于创建基于HTML5 canvas的应用程序,包括图像编辑、绘画和拼贴功能。在fabric.js中,你可以很容易地实现图片裁剪功能,通常通过以下几个步骤: 1. **引入fabric.js库**:首先,在HTML文件中引入fabric.js库和CSS样式。 ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.0.4/fabric.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.0.4/fabric.css"> ``` 2. **初始化canvas**:创建一个canvas元素,并使用fabric对象将其转换为可交互的画布。 ```javascript var canvas = new fabric.Canvas('myCanvas', { backgroundColor: 'white', }); ``` 3. **加载图片**:你可以通过`fabric.Image.fromURL`方法加载图片到画布上。 ```javascript fabric.Image.fromURL('image.jpg', function(img) { img.set({ left: 50, top: 50 }); // 设置图片位置 canvas.add(img); // 将图片添加到画布上 }); ``` 4. **启用裁剪功能**:fabric.js的Image对象有一个名为`interactivelyResize`的属性,可以设置它为true,允许用户拖拽四角或边框来裁剪图片。 ```javascript img.interactivelyResize = true; ``` 5. **监听缩放和裁剪事件**:当用户开始裁剪时,可以监听`object:scalingStarted`和`object:scalingFinished`等事件,根据需要调整裁剪区域。 6. **获取裁剪后的图片数据**:一旦裁剪完成,你可以从`canvas.getObjects()`中找到裁剪的图片,然后根据需求保存或处理它们。 ```javascript canvas.on('object:modified', function(e) { var croppedImage = canvas.toDataURL(); // 获得裁剪后图片的URL console.log(croppedImage); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值