javascript - 使用 JavaScript 将 Canvas 转换为图像

标签 javascript jquery canvas html5-canvas

<分区>

我想用 JavaScript 将 Canvas 转换为图像,当我尝试 canvas.toDataURL("image/png"); 时出现以下错误

SecurityError: The operation is insecure

最佳答案

你的想法是正确的,它会在非常简单的情况下起作用,例如:

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);

JSFiddle

但如果您“弄脏”了 Canvas ,就会出现问题。这是通过将来自不同来源的图像绘制到 Canvas 来完成的。例如,如果您的 Canvas 托管在 www.example.com ,并且您使用来自 www.wikipedia.org 的图像,然后你的 Canvas 的 origin-clean 标志在内部设置为 false

一旦 origin-clean 标志设置为 false,您就不能再调用 toDataURLgetImageData


从技术上讲,如果域、协议(protocol)和端口匹配,则图像具有相同的来源。


如果您在本地工作 (file://),那么绘制的任何图像都会触发该标志。这使调试变得烦人,但在 Chrome 中,您可以使用标志 --allow-file-access-from-files 启动它以允许它。

关于javascript - 使用 JavaScript 将 Canvas 转换为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301449/

相关文章:

javascript - Ramda : access input object's properties inside R. ifElse() 函数调用

jquery - 在 JQuery 中使用变量进行子选择

javascript - 在 Javascript 中创建的 Canvas 语音气泡 -> 测量文本高度?

java - Android - 每隔几秒改变球的颜色

javascript - 为什么在javascript Canvas 动画上创建几个对象后,它们是连接在一起的?

c# - 使用javascript查找放置在gridview中的复选框和文本框

javascript - 尝试获取元素的 HTML 代码值时出现奇怪的输出?

javascript - 如何拆分长 GraphQL 模式

javascript - Turbolinks 导致滚动事件不触发

javascript - 自动刷新 ASP.NET 不闪烁页面