在我的代碼中,我創建了使用結構形狀剪裁圖像的方法。我已經使用stackoverflow答案來實現這一點。不知何故,在使用此方法後,我無法使用默認結構畫布渲染方法呈現畫布。結構toDataUrl乘數不能按預期工作
var img01URL = 'https://www.google.com/images/srpr/logo4w.png';
var img02URL = 'http://fabricjs.com/lib/pug.jpg';
var canvas = new fabric.Canvas('c');
document.getElementById('download').addEventListener('click', function() {
canvas.renderAll();
this.href = canvas.toDataURL({
format: 'png',
multiplier: 2
});
this.download = "test.png";
}, false);
var clipRect1 = new fabric.Rect({
originX: 'left',
originY: 'top',
angle: 90,
left: 195,
top: 0,
width: 200,
height: 200,
fill: '#DDD', /* use transparent for no fill */
strokeWidth: 1,
lockMovementX: true,
lockMovementY: true,
angle: 5,
stroke: 'red'
});
var pugImg = new Image();
pugImg.onload = function (img) {
var pug = new fabric.Image(pugImg, {
angle: 0,
width: 500,
height: 500,
left: 245,
top: 35,
scaleX: 0.3,
scaleY: 0.3,
clipName: 'pug',
clipTo: function(ctx) {
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
clipRect1.render(ctx);
ctx.restore();
}
});
canvas.add(pug);
};
pugImg.src = img02URL;
pugImg.setAttribute('crossOrigin', 'anonymous');
#c {
border:0px solid #ccc;
}
<script src="//cdn.bootcss.com/fabric.js/1.5.0/fabric.js"></script>
<canvas id="c" width="500" height="400"></canvas>
<a id="download">Download as image</a>
有誰知道方法 – Dushan
未捕獲的SecurityError:未能執行'HTMLCanvasEl上的'toDataURL' ement':受污染的畫布可能無法出口。你有沒有注意到你的控制檯? – AndreaBogazzi
爲了清晰起見,如果有人想幫忙,我從小提琴中刪除了未使用的功能。如果尋求幫助,你應該提交一個乾淨的例子。 – AndreaBogazzi