在最近的开发当中,需要将一个生成的二维码保存在本地,然后网上找了一些资料,记录一下~

1.在你需要保存的img元素上绑定一个类名

 <vue-qr class="QRImg"  :size="260"  :text="QRCodeUrl"  :logoSrc="QrlogoSrc" colorLight="#fff" colorDark="#000" :margin="0"></vue-qr>

2.使用img保存

    // 下载二维码downloadIamge(el, name) {// 通过选择器获取img元素const img = document.querySelector(el);// // 将图片的src属性作为URL地址const url = img.src;const a = document.createElement("a");const event = new MouseEvent("click");a.download = name || "下载二维码";a.href = url;a.dispatchEvent(event);},

3.使用Canvas 保存

  // 通过选择器获取canvas元素const canvas = document.querySelector(selector);// 使用toDataURL方法将图像转换被base64编码的URL字符串const url = canvas.toDataURL("image/png");// 生成一个a元素const a = document.createElement("a");// 创建一个单击事件const event = new MouseEvent("click");// 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称a.download = name || "下载图片名称";// 将生成的URL设置为a.href属性a.href = url;// 触发a的单击事件a.dispatchEvent(event);

4.解决跨域下载的问题

    downloadIamge(selector, name) {const image = new Image();// 解决跨域 Canvas 污染问题image.setAttribute("crossOrigin", "anonymous");image.onload = function() {const canvas = document.createElement("canvas");canvas.width = image.width;canvas.height = image.height;const context = canvas.getContext("2d");context.drawImage(image, 0, 0, image.width, image.height);const url = canvas.toDataURL("image/png");// 生成一个a元素const a = document.createElement("a");// 创建一个单击事件const event = new MouseEvent("click");// 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称a.download = name || "下载图片名称";// 将生成的URL设置为a.href属性a.href = url;// 触发a的单击事件a.dispatchEvent(event);};image.src = document.querySelector(selector).src;},

5.总结 a标签的download属性

a标签加上downlaod属性后,就可完成对href属性链接文件的下载,但仅仅是限于同源文件,如果是非同源,download属性会失效。
无download属性的时候,a标签的默认行为是链接跳转进行预览,而针对浏览无法预览的文件,也可达到下载的效果。
记录一下工作日常,写得不太好,请各位看官见谅。

前端使用JavaScript保存图片相关推荐

  1. 关于前端使用JavaScript无法实现canvas打印问题的解决

    关于前端使用JavaScript无法实现canvas打印问题的解决 参考文章: (1)关于前端使用JavaScript无法实现canvas打印问题的解决 (2)https://www.cnblogs. ...

  2. 好程序员web前端分享javascript枚举算法

    好程序员web前端分享javascript枚举算法,题目:在1,2,3,4,5 五个数中,我们随机选取 3个数.问有多少种取法?并且把每种取出数的方法列举出来. 乍看这道题,其实感觉没什么难度.三个f ...

  3. 【从0到1学Web前端】javascript中的ajax对象(一)

    [从0到1学Web前端]javascript中的ajax对象(一) 如今最流行的获取后端的(浏览器从server)数据的方式就是通过Ajax了吧.今天就来具体的来学习下这个知识吧.假设使用ajax来訪 ...

  4. 前端获取div里面的标签_web前端教程JavaScript学习笔记DOM

    web前端教程JavaScript学习笔记 DOM一DOM(Document Object Model): 文档对象模型 其实就是操作 html 中的标签的一些能力 我们可以操作哪些内容 获取一个元素 ...

  5. JavaScript id_好程序员web前端分享Javascript中函数作为对象

    好程序员web前端分享Javascript中函数作为对象,Javascript赋予了函数非常多的特性,其中最重要的特性之一就是将函数作为第一型的对象.那就意味着在javascript中函数可以有属性, ...

  6. 互联网公司前端初级Javascript面试题

    互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点) JavaScript是一种基于对象(Object)和事件 ...

  7. javascript乘法和加法_Web前端:JavaScript中的NaN是什么?

    大家好,我来了,本期为大家带来的前端开发知识是"Web前端:JavaScript中的NaN是什么?",有兴趣做前端的朋友,一起来看看吧! JavaScript中的数字类型包含整数和 ...

  8. mfc获取子窗口句柄_前端设计-JavaScript中父窗口与子窗口间的通信

    父窗体与子窗体之间的通信 在之前文章讲解windows程序设计过程中,我们曾描述了windows程序窗口之间通信与控制实现方法与过程,如窗体之间参数传递等.本文主要从Web程序开发前端JavaScri ...

  9. web前端分享JavaScript到底是什么?特点有哪些?

    web前端分享JavaScript到底是什么?特点有哪些?这也是成为web前端工程师必学的内容.今天为大家分享了这篇关于JavaScript的文章,我们一起来看看. 一.JavaScript是什么? ...

最新文章

  1. 一篇图看清Java中的各种Queue
  2. Matlab 图像的邻域和块操作
  3. 【洛谷P1632】点的移动
  4. 想创业没有资金,如何获得启动资金?
  5. python求加速度_如何利用Python 为自然语言处理加速度
  6. Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目
  7. 什么是堆什么是栈以及两者区别特点
  8. electron sqlite3_Electron+React+Antd工程搭建
  9. [线筛五连]线筛素数
  10. 双色球神经网络算法分析,双色球预测程序算法
  11. [转自:https://www.cnblogs.com/dskin/p/4606293.html] C# Winform实现炫酷的透明动画界面 做过.NET Winform窗体美化的人应该都很熟悉U
  12. 支持Android 11安卓Flash播放器终极版源码方案2022(1:概叙)
  13. [3D分割 Benchmak] ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes
  14. mysql候选关键字_MySQL Key值(PRI, UNI, MUL)的含义、超键(super key)、候选键(candidate key)、主键(primary key)...
  15. 计算机不认2t移动硬盘,高手指导win7系统无法识别2T希捷的硬盘的还原技巧
  16. 传奇修改map地图教程_传奇地图事件触发脚本教程
  17. 机器学习一百天 数据预处理
  18. 如何用火狐浏览器firefox模拟手机浏览器客户端
  19. GMap2 与 google.maps.Map 的区别
  20. 如何用未越狱手机安装ipa文件(更新版)

热门文章

  1. mysql8.0.25升级到mysql8.0.30
  2. 使用华为手机!不知道这5个实用黑科技,几千块钱就白花了
  3. 51单片机—详细(存储器RAM/ROM、引脚、中断系统、定时/计数器、串行口通信)
  4. 富爸爸——富人的阴谋
  5. 未来:互联网,人脑和宇宙的三者合一
  6. windows的远程桌面如何全屏
  7. 计算机英语GDDR翻译中文,GDDR6是什么意思 GDDR6和GDDR5的区别
  8. jQuery08源码 (5140 , 6057) DOM操作 : 添加 删除 获取 包装 DOM筛选
  9. 主流消息队列有哪些?
  10. mysql网站如何搭建_如何搭建一个自己的网站(绝对详细~)