我有一个问题-我使用fabric.js从服务器加载图像。
图像具有https
协议,服务器所有带有CORS
的标头。
当我想使用toDataURL()
我遇到一个错误:SecurityError:无法在'HTMLCanvasElement'上执行'toDataURL':可能无法导出污染的画布。
但是,如果我没有在画布中设置图像,那一切都很好,我可以在base64中转换画布。
这是我的图像加载代码:
fabric.fabric.Image.fromURL('https://images.pexels.com/photos/414612/pexels-photo-414612.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', function(oImg) {
oImg.set({
left: 0,
top: 0,
width: 500,
height: 500
}, { crossOrigin: 'anonymous' });
canvas.setBackgroundImage(oImg, canvas.renderAll.bind(canvas), {
scaleX: canvas.width / oImg.width,
scaleY: canvas.height / oImg.height
});
canvas.renderAll();
});
这是转换代码:
const imgData = this.canvas.toDataURL({'format': 'jpeg'});
const body = {
"marked_photo": imgData
}
put(`tickets/contents/${this.props.redux.state.openedPhotoId}/`, body)
.then(res => console.error(res))