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);
            });
相关推荐
浪扼飞舟1 分钟前
C#(多线程和同步异步)
java·开发语言
万行1 分钟前
机器人系统SLAM讲解
开发语言·python·决策树·机器学习·机器人
抬头望远方2 分钟前
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
开发语言·支持向量机·matlab·无人机
matlab科研助手4 分钟前
【路径规划】基于遗传算法的农药无人机在多边形区域的路径规划研究附Matlab代码
开发语言·matlab·无人机
2301_780669867 分钟前
字符集及其编码、解码操作、IO流分类
java·开发语言
无名的小三轮15 分钟前
第三章 防火墙概述
开发语言·php
冰暮流星22 分钟前
javascript的switch语句介绍
java·前端·javascript
有梦想的攻城狮22 分钟前
Java中的Double类型的存在精度丢失详解
java·开发语言·bigdecimal·double
一路往蓝-Anbo34 分钟前
【第42期】调试进阶(一):IDE中的Register与Memory窗口
c语言·开发语言·ide·stm32·单片机·嵌入式硬件
m0_7482495440 分钟前
Java 语言提供了八种基本类型【文123】
java·开发语言·python