如何在 fabric canvas 中获取带有背景图像的绘图路径中的图像?
how to get the image in drawing path with background image in fabric canvas?
我想在布料中裁剪套索 canvas。
现在我可以在 canvas 上绘制路径。
但我不知道如何用背景图像切出路径。
有什么办法可以保存剪切的图像吗?
这是我的代码
const canvas = document.getElementById('c');
const ctx = canvas.getContext('2d');
const img = document.createElement('IMG');
const base64data = canvas.toDataURL("image/jpeg")
img.onload = function() {
const OwnCanv = new fabric.Canvas('c', {
isDrawingMode: true
});
canvas.width = img.width;
canvas.height = img.height;
const imgInstance = new fabric.Image(img, {
async: false,
left: 0,
top: 0,
lockMovementX: true,
lockMovementY: true
});
OwnCanv.add(imgInstance);
OwnCanv.freeDrawingBrush.color = "purple"
OwnCanv.freeDrawingBrush.width = 5
OwnCanv.on('path:created', function(option) {
const path = option.path;
OwnCanv.isDrawingMode = false;
OwnCanv.remove(imgInstance);
OwnCanv.remove(path);
OwnCanv.clipTo = function(ctx) {
path.render(ctx);
};
OwnCanv.add(imgInstance);
});
}
img.src = base64data
}
你可以这样做:
OwnCanv.on('path:created', function(option) {
var path = option.path;
imgInstance.clipTo = function(ctx) {
//save context state
ctx.save();
//reset context tranformation matrix
ctx.setTransform(1,0,0,1,0,0);
//render the path
path.render(ctx);
//restore context state
ctx.restore();
};
OwnCanv.renderAll();
});
我想在布料中裁剪套索 canvas。 现在我可以在 canvas 上绘制路径。 但我不知道如何用背景图像切出路径。 有什么办法可以保存剪切的图像吗? 这是我的代码
const canvas = document.getElementById('c');
const ctx = canvas.getContext('2d');
const img = document.createElement('IMG');
const base64data = canvas.toDataURL("image/jpeg")
img.onload = function() {
const OwnCanv = new fabric.Canvas('c', {
isDrawingMode: true
});
canvas.width = img.width;
canvas.height = img.height;
const imgInstance = new fabric.Image(img, {
async: false,
left: 0,
top: 0,
lockMovementX: true,
lockMovementY: true
});
OwnCanv.add(imgInstance);
OwnCanv.freeDrawingBrush.color = "purple"
OwnCanv.freeDrawingBrush.width = 5
OwnCanv.on('path:created', function(option) {
const path = option.path;
OwnCanv.isDrawingMode = false;
OwnCanv.remove(imgInstance);
OwnCanv.remove(path);
OwnCanv.clipTo = function(ctx) {
path.render(ctx);
};
OwnCanv.add(imgInstance);
});
}
img.src = base64data
}
你可以这样做:
OwnCanv.on('path:created', function(option) {
var path = option.path;
imgInstance.clipTo = function(ctx) {
//save context state
ctx.save();
//reset context tranformation matrix
ctx.setTransform(1,0,0,1,0,0);
//render the path
path.render(ctx);
//restore context state
ctx.restore();
};
OwnCanv.renderAll();
});