【发布时间】:2020-05-18 11:22:06
【问题描述】:
我正在尝试制作一个按钮,当按下该按钮时,它会将画布元素下载为 PNG 文件。
function downloadImage(canvas)
{
let url = canvas.toDataURL("image/png");
window.open(url);
}
此代码适用于未污染的画布,但我尝试下载图像的画布已被污染,因此我无法在其上运行 .toDataURL()。我见过的许多处理受污染的画布的线程都与创建画布的图像显示有关,但是有没有办法直接下载它而不创建中间图像元素?
我的网站非常简单,目前我没有在任何服务器上运行它(只是在谷歌浏览器中打开 index.html 文件)。但是,我也不想更改任何本地浏览器设置,因为我希望它在多个不同的浏览器上运行。
【问题讨论】:
-
所以你正在使用
file:///协议做所有事情?没有来自其他网站的外部图片?使用 firefox,它不认为file:///是跨域 -
我在调试时在 file:/// 环境中工作,但最终我确实想将它发布到 Github Pages,在那里来自不同浏览器的人们将访问它,所以改变浏览器不完全适合我。
-
对,那么在 github 页面中,图片会是同源的吗?
-
图片是直接上传到网站上的,不存储在任何地方,而画布是通过对图片进行操作制成的,所以我认为答案是肯定的。
-
那么一旦你摆脱了
file:///协议,你就不会遇到问题了——使用本地http服务器进行开发——使用nodejs或python非常简单
标签: javascript html