无法在“ HTMLCanvasElement”上执行“ toDataURL”:可能无法导出污染的画布。即使在伺服器上使用CORS标签

时间:2019-03-20 15:54:57

标签: javascript canvas cors

我有一个问题-我使用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))

0 个答案:

没有答案