我想使用JavaScript将canvas转换为图像。当我尝试使用 canvas.toDataURL("image/png");
时,会出现以下错误:
SecurityError:该操作不安全
我想使用JavaScript将canvas转换为图像。当我尝试使用 canvas.toDataURL("image/png");
时,会出现以下错误:
SecurityError:该操作不安全
你的想法是正确的,它在非常简单的情况下能够起作用,比如:
var can = document.getElementById('canvas1');
var ctx = can.getContext('2d');
ctx.fillRect(50,50,50,50);
var img = new Image();
img.src = can.toDataURL();
document.body.appendChild(img);
如果您在画布上绘制了来自不同源的图像,则会出现问题,这会使您的画布变得“肮脏”。例如,如果您的画布托管在www.example.com,并且使用来自www.wikipedia.org的图像,则您的画布的origin-clean标志在内部设置为false
。
一旦 origin-clean 标志被设置为 false
,则不允许再调用 toDataURL
或 getImageData
方法。
从技术上讲,只有当域名、协议和端口匹配时,图像才属于相同的源。
如果您正在本地工作(file://),则任何绘制的图像都会触发此标志。这使得调试变得烦人,但使用 Chrome 您可以使用标志 --allow-file-access-from-files
来允许它。
这对我有用
//after creating your plot do
var imgData = $('#chart1').jqplotToImageStr({}); // given the div id of your plot, get the img data
var imgElem = $('<img/>').attr('src',imgData); // create an img and add the data to it
$('#imgChart1').append(imgElem); //