javaScript解决手机浏览器下载为图片之后,图片漆黑无法保存的问题

pc端能正常下载图片并查看

手机移动端下载的图片全是黑色的并且无法保存,这个问题可能与移动浏览器的安全策略有关

解决办法:使用Blob对象和createObjectURL方法来创建一个临时URL,然后将其赋给链接的href属性下载:

javascript 复制代码
        // 转blob函数
        function dataURLtoBlob(dataURL) {
            var arr = dataURL.split(','), mime = arr[0].match(/:(.*?);/)[1],
                bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
            while (n--) {
                u8arr[n] = bstr.charCodeAt(n);
            }
            return new Blob([u8arr], { type: mime });
        }           

         // 使用html2canvas将 HTML 元素转换为 Canvas
            html2canvas(document.getElementById("myElementId"), {
                useCORS: true
            }).then(canvas => {
                // 获取Canvas的图像数据
                const imgData = canvas.toDataURL('image/png');
                const blob = dataURLtoBlob(imgData);
                // 创建一个链接元素
                var a = document.createElement('a');
                // 将数据URL设置为链接的href属性
                a.href = window.URL.createObjectURL(blob);
                // 设置下载的文件名
                a.download = '参观留念.png';
                // 模拟点击这个链接,触发下载
                a.click();
                // 释放Blob URL
                window.URL.revokeObjectURL(a.href);
            });
相关推荐
勿芮介12 小时前
【研发工具】OpenClaw基础环境安装全教程-Node\NVM\PNPM\Bash
开发语言·node.js·bash·ai编程
JamesYoung797112 小时前
第七部分 — 存储 数据建模与迁移提示
java·开发语言·数据结构
rmst12 小时前
列表的拖动排序动画原理
javascript·react.js·动效
大尚来也12 小时前
超越“传参”:HTTP GET与POST的深度辨析与场景选型指南
开发语言
大鹏说大话12 小时前
破局与重构:微服务架构的演进之路、核心挑战与基石组件
开发语言
undeflined12 小时前
EnvManage - 多环境开发代理管理工具
前端·javascript·node.js
程序员敲代码吗12 小时前
进程与线程:操作系统中的核心组件
java·开发语言
Java面试题总结12 小时前
java面试题及答案(基础题122道)
java·开发语言·jvm·spring·spring cloud·golang·java-ee
三小河12 小时前
从零实现ollama本地大模型可视化+内网穿透
前端·javascript·面试
Cg1362691597412 小时前
JS-对象-array数组
开发语言·前端·javascript