一个用于图片标注的javascript库,主要用于计算机视觉领域,基于canvas,不依赖任何第三方库,简单轻量(23kb),支持矩形、多边形、点、折线、圆形标注。
demo 👉 codepen.io/heylight/pe…
简介
-
支持矩形标注、多边形标注、点标注、折线标注、圆形标注。
-
支持拖拽、缩放。
-
支持控制点编辑。
-
支持全局样式设置,单个形状样式设置。
-
支持添加、编辑标签。
-
支持桌面端和移动端。
-
每个形状有唯一 uuid,没有则自动生成。
使用
-
设置 instance.createType 指定需要创建形状类型,不创建时需要设置为0。
-
创建矩形时,按住鼠标左键拖动完成创建。
-
创建多边形或折线时,鼠标左键单击添加点,双击完成创建,
Escape
退出创建,Backspace
退一步删除选择点。 -
创建点时,鼠标左键点击完成创建。
-
创建圆时,按住鼠标左键拖动完成创建。
-
按住鼠标右键拖动画布。
-
鼠标滚轮缩放画布。
-
选中形状,
Backspace
删除。 -
通过
instance.dataset
或者监听updated
事件回调参数查看标注结果。
支持 UMD 模块规范
<script src="https://unpkg.com/canvas-select@^2/lib/canvas-select.min.js"></script>
npm install canvas-select --save
<canvas class="container"></canvas>
interface CanvasSelectProps{
el:string|HTMLCanvasElement; // css选择器或者HTMLCanvasElement
src:string; // 图片链接
}
const instance = new CanvasSelect('.container', '/one.jpg');
// or
// const instance = new CanvasSelect('.container');
// instance.setImage('/one.jpg');
let option = [
{
label: "rectangle",
labelFillStyle: "#f00",
textFillStyle: "#fff",
coor: [[184, 183], [275, 238]], // required
type: 1 // required
},
{
label: "polygon",
coor: [[135, 291], [129, 319], [146, 346], [174, 365], [214, 362], [196, 337], [161, 288]], // required
type: 2 // required
},
{
label: "dot",
coor: [345, 406], // required
type: 3 // required
},
{
label: "line",
coor: [[470, 155], [490, 230], [493, 298]], // required
type: 4 // required
},
{
label: "circle",
coor: [369, 197], // required
radius: 38, // required
type: 5 // required
}
];
// 加载数据
instance.setData(option);
// 0 不创建(默认),1创建矩形,2创建多边形,3点标注,4折线标注,5圆形标注
instance.createType = 1;
instance.on('select', (info) => {
console.log('select', info);
// 可对选中对参数info进行修改
// 修改标签:info.label="hello"
// 单个形状修改填充颜色:info.fillStyle="#0f0"
// 然后调用instance.update()更新视图
});
更多使用文档详情,请查看 github.com/heylight/ca…
诚邀各种意见或想法,欢迎issue、PR
如果你觉得这个项目还不错,就给个star吧