h5图片下载

news/2024/11/16 15:56:57/

通过链接保存图片,是很常见的需求,我这里总结了几种比较好用的方式,以下方式在pc中基本适用

这里的下载最终都使用了adownload的属性,区别在于前置对图片的处理。(直接通过图片链接使用并不适用大部分机型)

1.通过图片加载,canvas转base64,a超链的download属性下载图片(推荐方法,适用于大部分机型)

tips:  .bin文件需要加文件后缀命名(这里为photo.png)

            downloadIamge(imgsrc, name) {//下载图片地址和图片名let image = new Image();// 解决跨域 Canvas 污染问题image.setAttribute("crossOrigin", "anonymous");image.onload = function() {let canvas = document.createElement("canvas");canvas.width = image.width;canvas.height = image.height;let context = canvas.getContext("2d");context.drawImage(image, 0, 0, image.width, image.height);let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据let a = document.createElement("a"); // 生成一个a元素let event = new MouseEvent("click"); // 创建一个单击事件a.download = name || "photo.png"; // 设置图片名称a.href = url; // 将生成的URL设置为a.href属性a.dispatchEvent(event); // 触发a的单击事件};image.src = imgsrc;},

2.于上相同,不同的是用了 window.URL.createObjectURL 处理图片。(测试后,部分机型并没有window.URL,或者无法通过这个进行转化)

              downloadImgByBlob(url) {var img = new Image()img.onload = function() {var canvas = document.createElement('canvas')canvas.width = img.widthcanvas.height = img.heightvar ctx = canvas.getContext('2d')// 将img中的内容画到画布上ctx.drawImage(img, 0, 0, canvas.width, canvas.height)// 将画布内容转换为Blobcanvas.toBlob((blob) => {// blob转为同源urlvar blobUrl = window.URL.createObjectURL(blob)// 创建a链接 var a = document.createElement('a')a.href = blobUrla.download = 'younei.png' //文件名称,不填默认为当前请求名称// 触发a链接点击事件,浏览器开始下载文件a.click()})}img.src = url// 必须设置,否则canvas中的内容无法转换为blobimg.setAttribute('crossOrigin', 'Anonymous')},

3.这个使用的也是URL.createObjectURL,区别在于触发a事件的时候使用了另外的方式,因此存在同样的问题。(也许能跟第一种结合一下)

                savePic(Url){// Url = this.dialogImgUrl //图片路径,也可以传值进来var triggerEvent = "touchstart"; //指定下载方式var blob=new Blob([''], {type:'application/octet-stream'}); //二进制大型对象blobvar url = URL.createObjectURL(blob); //创建一个字符串路径空位var a = document.createElement('a'); //创建一个 a 标签a.href = Url;  //把路径赋到a标签的href上//正则表达式,这里是把图片文件名分离出来。拿到文件名赋到a.download,作为文件名来使用文本a.download = Url.replace(/(.*\/)*([^.]+.*)/ig,"$2").split("?")[0]; //代替方法。创建鼠标事件并初始化(后面这些参数我也不清楚,参考文档吧 https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)var e = new MouseEvent('click', ( true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null));  //派遣后,它将不再执行任何操作。执行保存到本地a.dispatchEvent(e); //释放一个已经存在的路径(有创建createObjectURL就要释放revokeObjectURL)URL.revokeObjectURL(url);  },

 


http://www.ppmy.cn/news/181902.html

相关文章

识图在线识图_以图搜图在线搜索软件

各位在找一张图片的时候会不会常常因为不知晓出处而烦恼,现在推荐各位使用一个可以以图搜图的在线搜索利器,当然好不好用,大家可以尽情的尝试,如果好用记得点个好评,废话不多说,下面开始介绍搜索软件&#…

js实现图片下载

目录 1. 在新窗口打开图片&#xff0c;右键另存为 2. 同源下载图片 3. 不同源下载图片 1. 在新窗口打开图片&#xff0c;右键另存为 <img src"./images/123.png" alt"" width"200" height"200"><button>点击下载</…

“以图搜图”引擎及网站合集

1.QBIC http://www.research.ibm.com/labs/almaden/ QBIC&#xff08;Query by image contnet&#xff09;是由IBM提出的&#xff0c;在基于内容图像检索领域应用最早的商用产品&#xff0c;QBIC系统提供了多种查询方式&#xff0c;包括&#xff1a;利用标准范图检索、用户绘制…

图像搜索:以图搜图

以图搜图 随着数字时代的到来&#xff0c;单单的文字搜素已经无法满足人们的搜索了&#xff0c;图像搜索&#xff0c;甚至是视频搜索都已经比较成熟。本文大致讲解下图像搜索&#xff1a; 发展历程 原理 搜索项目&#xff1a;主要分为三个部分——图像特征抽取&#xff0c;构…

百度贴吧下载图片 【可搜索】

我的这个是输入贴吧的名字&#xff0c;然后可以下载那个贴吧页的图片&#xff0c;可上下页&#xff0c;也可以进入其中一条帖子&#xff0c;并下载那个贴子中的图片&#xff0c;同样可以翻页 注&#xff1a;我代码中的http_list是我从一个网站上面获取的代理IP https://www.xic…

js图片下载

var url https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u743446847,1016653021&fm27&gp0.jpg // 将链接地址字符内容转变成blob地址 fetch(url).then(res > res.blob()).then(blob > { // 创建隐藏的可下载链接 var a document.createElement(…

搜索引擎(包括图片搜索)

转自&#xff1a;http://blog.csdn.net/v_july_v/article/details/6827391 1、什么是搜索引擎 搜索引擎指自动从因特网搜集信息&#xff0c;经过一定整理以后&#xff0c;提供给用户进行查询的系统。因特网上的信息浩瀚万千&#xff0c;而且毫无秩序&#xff0c;所有的信息像汪…

11款相似图片搜索引擎推荐,以图搜图将不再是难事

你想凭着一张现有图片找出它的原始图片&#xff0c;或者是凭着一张小的缩略图找出原始大图吗&#xff1f; 下面的十一款搜索引擎可以帮你实现&#xff0c;以图找图&#xff0c;以图搜图&#xff0c;以图片搜索相似的图片。 1.http://tineye.com/ Tineye是典型的以图找图搜索引…