javascript - 保存画布元素
问题描述
我发现我可以<canvas>
使用以下脚本将元素的内容下载到文件中:
var download = function(){
var link = document.createElement("a");
link.download = 'filename.png';
link.href = cvs2.toDataURL();
link.click();
}
但是,在 Chrome (android) 上使用此方法时,它似乎已将文件下载到我设备上的私有 chrome 文件夹中。我需要将画布内容作为图像文件下载到正常的下载文件夹(即/sdcard/Downloads
)中。
我怎样才能做到这一点?
解决方案
考虑使用元素上的toBlob()
方法canvas
首先获取画布内容的文件/blob。然后,使用如图所示的URL APIcreateObjectURL()
的和revokeObjectURL()
方法,获取并分配对应于您的临时下载链接:url
var download = function(filename, mimeType) {
/* Use toBlob to get a file from the canvas element */
canvas.toBlob(function(blob) {
/* Get url for this file blob */
var url = URL.createObjectURL(blob);
/* Create temporary link and start download */
var link = document.createElement("a");
link.download = filename;
link.href = url;
link.click();
/* Clean up */
URL.revokeObjectURL(url);
}, mimeType);
}
/* Usage example */
download('my-filename.png', 'image/png')
希望这可以帮助!
推荐阅读
- python - fibnoacci 测试用例问题 - Python
- amazon-web-services - 如何添加运行状况检查以检查我在 aws autoscale 中的实例是否与另一个独立实例建立了成功连接
- asp.net - 带有 ASP.Net Core Identity 登录链接的 Blazor WebAssembly 站点中的网络错误
- android - 无法为抽象类“GoogleServicesTask”创建代理类。使用“com.google.gms:google-services:4.3.4”
- node.js - 在 npm 安装期间忽略本地 .npmrc 配置文件
- javascript - 在正确的输出上改变颜色
- reactjs - Material UI/React - 辅助文本未显示
- browser - 为什么 Cloudflare worker 上的站点预览与浏览器不同?
- r - 贝叶斯因子作为 ratioBF 的非逻辑输出
- arrays - 如何拆分多个数组,在laravel中插入不同的表