javascript - 受污染的 Canvas 不得导出

标签 javascript html5-canvas

我想将我的 Canvas 保存到 img。我有这个功能:

function save() {
    document.getElementById("canvasimg").style.border = "2px solid";
    var dataURL = canvas.toDataURL();
    document.getElementById("canvasimg").src = dataURL;
    document.getElementById("canvasimg").style.display = "inline";
}

它给了我错误:

Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

我该怎么办?

最佳答案

出于安全原因,您的本地驱动器被声明为“其他域”并且会污染 Canvas 。

(那是因为您最敏感的信息可能在您的本地驱动器上!)。

在测试时尝试以下解决方法:

  • 将所有与页面相关的文件(.html、.jpg、.js、.css 等)放在桌面上(而不是放在子文件夹中)。

  • 将您的图片发布到支持跨域共享的网站(如 dropbox.com 或 GitHub)。确保将图像放在 Dropbox 的公用文件夹中,并在下载图像时设置交叉源标志 (var img=new Image(); img.crossOrigin="anonymous" ...)

  • 在您的开发计算机上安装网络服务器(IIS 和 PHP 网络服务器都有免费版本,可以很好地在本地计算机上运行)。

关于javascript - 受污染的 Canvas 不得导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22710627/

相关文章:

javascript - 使用 html5 Canvas 从线条绘制图像

javascript - 如何使用javascript绘制带有动画的多个 Canvas 元素?

javascript - 在angular2中滚动顶部

javascript - 如何防止 (jquery) ajax 调用中存在许多嵌套函数?

javascript - 延期/ promise 混淆和实现

javascript - Canvas 绘制带箭头的虚线

javascript - 使用 jQuery 将 HTML 属性设置为 JSON 对象

javascript - 这些 JavaScript 代码行是否等效?

javascript - 将多个饼图链接到 dc.js 中的单个图例

javascript - 使用转换时在 HTML5 Canvas 上绘制清晰的 1px 线条