fabric jsを使用して2つの画像をマスクすることは可能ですか?
例: 私は色付きの形 (ハート) を持っています。別の画像があり、その新しい画像がハートとしてのみ表示されるように、ハートの上にマスクしたいと思います。2 番目にアップロードされた画像を移動し、サイズを変更して、そのハートの目的の領域を取得できます。
どちらの画像もユーザーがアップロードした画像であり、こちらの jsfiddle の例のようにファブリックを使用して作成され、画像をドラッグしてサイズ変更する長方形や正方形ではありません。
http://jsfiddle.net/Jagi/efmbrm4v/1/
var canvas = new fabric.Canvas('myCanvas');
var clippingRect = new fabric.Rect({
left: 0,
top: 0,
width: 100,
height: 100,
fill: 'transparent',
opacity: 1
});
canvas.add(clippingRect);
function handleImage(e) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.onload = function () {
var instanceWidth, instanceHeight;
instanceWidth = img.width;
instanceHeight = img.height;
var imgInstance = new fabric.Image(img, {
width: instanceWidth,
height: instanceHeight,
top: (canvas.getHeight() / 2 - instanceHeight / 2),
left: (canvas.getWidth() / 2 - instanceWidth / 2),
originX: 'left',
originY: 'top'
});
canvas.add(imgInstance);
imgInstance.clipTo = function (ctx) {
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.rect(
100, 100,
200, 200
);
ctx.restore();
};
canvas.renderAll();
};
img.src = event.target.result;
};
reader.readAsDataURL(e.target.files[0]);
}
まさにこれが必要ですが、2 つのカスタム イメージ (ユーザーがアップロードしたイメージ) が必要です。