vue生成二维码图片,这里使用的是qrcode.js 这个插件(亲测写法,兼容没有问题)

第一步,下载插件

需要注意,这里下载的是qrcodejs2

  1. cnpm install --save qrcodejs2

第二步,在组件使用

  1. <template>
  2. <div>
  3. <div @click="getQrcode"></div>//生成二维码
  4. <div id="qrcode"></div> //创建一个div,并设置id为qrcode
  5. <div @click="downs()"></div> //下载图片
  6. </div>
  7. </template>
  8. <script>
  9. import QRCode from 'qrcodejs2' // 引入qrcode
  10. export default {
  11. name : 'test',
      data(){
  1.     return{
  2.     link: 'http://test.wx.jia-r.com/temporaryCarIndex.html' //需要生成二维码图片的字符串
  3.   },
      }
      components:{QRCode },
  4.   methods: {
  5. getQrocde(){
  6. document.getElementById('qrcode').innerHTML=''
  7. this.$nextTick (function () {//生成二维码
  8. this.qrcode();
  9. })
  10. },
  11. qrcode () {
  12. let that = this;
  13. let qrcode = new QRCode('qrcode', {
  14. width: 200,
  15. height: 200, // 高度
  16. text: this.link, // 二维码内容
  17. // render: 'canvas' , // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
  18. // background: '#f0f', // 背景色
  19. // foreground: '#ff0' // 前景色
  20. })
  21. },
  22. downs(){
  23. // //找到canvas标签
  24. let myCanvas = document.getElementById('qrcode').getElementsByTagName('canvas');
  25. let img=document.getElementById('qrcode').getElementsByTagName('img')
  26. // // //创建一个a标签节点
  27. let a= document.createElement("a")
  28. // //设置a标签的href属性(将canvas变成png图片)
  29. let imgURL=myCanvas[0].toDataURL('image/jpg');
  30. let ua = navigator.userAgent;
  31. if (ua.indexOf("Trident") != -1 && ua.indexOf("Windows") != -1) { // IE内核 并且 windows系统 情况下 才执行;
  32. var bstr = atob(imgURL.split(',')[1])
  33. var n = bstr.length
  34. var u8arr = new Uint8Array(n)
  35. while (n--) {
  36. u8arr[n] = bstr.charCodeAt(n)
  37. }
  38. var blob = new Blob([u8arr])
  39. window.navigator.msSaveOrOpenBlob(blob, '下载' + '.' + 'png')
  40. }else if(ua.indexOf("Firefox") > -1){ //火狐兼容下载
  41. let blob = this.base64ToBlob(imgURL); //new Blob([content]);
  42. let evt = document.createEvent("HTMLEvents");
  43. evt.initEvent("click", true, true);//initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为
  44. a.download = ' ';//下载图片名称,如果填内容识别不到,下载为未知文件,所以我这里就不填为空
  45. a.href = URL.createObjectURL(blob);
  46. a.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));//兼容火狐
  47. }else{ //谷歌兼容下载
  48. img.src=myCanvas[0].toDataURL('image/jpg');
  49. // a.href = myCanvas[0].toDataURL('image/png').replace('image/png', 'image/octet-stream')
  50. a.href=img.src
  51. //设置下载文件的名字
  52. a.download = "下载"
  53. //点击
  54. a.click()
  55. }
  56. },
  57. //base64转blob
  58. base64ToBlob(code) {
  59. let parts = code.split(';base64,');
  60. let contentType = parts[0].split(':')[1];
  61. let raw = window.atob(parts[1]);
  62. let rawLength = raw.length;
  63. let uInt8Array = new Uint8Array(rawLength);
  64. for (let i = 0; i < rawLength; ++i) {
  65. uInt8Array[i] = raw.charCodeAt(i);
  66. }
  67. return new Blob([uInt8Array], {type: contentType});
  68. }
  69. }
  70. }
  71. </script>

这里分享一个小技巧,通过qrcode生成的二维码本身是没有白边的,这样的二维码并不好看↓

如果想像这样生成一个有白边的二维码,是不是更好看一点,只需要通过css样式即可实现↓

代码如下:

  1. <style lang='less'>
  2. #qrcode { //图片有白边填充css
  3. display: inline-block;
  4. img {
  5. width: 132px;
  6. height: 132px;
  7. background-color: #fff; //设置白色背景色
  8. padding: 6px; // 利用padding的特性,挤出白边
  9. }
  10. }
  11. </style>

结束!!

vue2.0生成二维码图片并且下载图片到本地兼容写法的更多相关文章

  1. canvas生成二维码,并下载保存为本地的图片

    function getTicket(id,salt){//qrcode生成canvas二维码 $(".zc-mask").show(); $(".edit-box&qu ...

  2. C#Qrcode生成二维码支持中文,带图片,带文字

    C#Qrcode生成二维码支持中文带图片的操作请看二楼的帖子,当然开始需要下载一下C#Qrcode的源码 下载地址 : http://www.codeproject.com/Articles/2057 ...

  3. C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏

    1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...

  4. Qrcode生成二维码支持中文,带图片,带文字

    1.下载Qrcode库源码, 下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library2.打开源码时, 部分类 ...

  5. 转: jquery.qrcode.js生成二维码插件&转成图片格式

    原文地址: https://blog.csdn.net/u011127019/article/details/51226104 1.qrcode其实是通过使用jQuery实现图形渲染,画图,支持can ...

  6. Swift3.0生成二维码、扫描二维码、相册读取二维码,兼容iOS7(结合ZXingObjC)

    二维码生成 //MARK: 传进去字符串,生成二维码图片(>=iOS7) text:要生成的二维码内容 WH:二维码高宽 private func creatQRCodeImage(text: ...

  7. Jquery生成二维码(微信中长按图片识别二维码功能)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. js生成二维码并保存成图片下载

    我这里使用是jQuery,和jquery.qrcode.js,需要的可以自己找链接下载.示例代码仅做参考 html代码: <a id="downloadLink">&l ...

  9. C#使用Zxing2.0生成二维码 带简单中心LOGO

    参考:http://www.open-open.com/lib/view/open1379214678162.html 代码:http://files.cnblogs.com/halo/%E4%BA% ...

随机推荐

  1. c++json构建与解析组件 RapidJSON 没用过永远不会知道有多好用

    参考资料: 官方文档 推荐[腾讯RapidJSON]学习笔记 原理请参考以上资料 构建json Document doc; Document::AllocatorType &allocator ...

  2. 神经网络 OCR 参考

    1. https://blog.csdn.net/u010159842/article/details/87271554 2. https://blog.csdn.net/weixin_4286104 ...

  3. AI资源对接需求汇总:第3期

    更好的阅读体验,请查看首发原文链接:AI资源对接需求汇总:第3期 平台介绍 平台由人工智能领域几个知名原创公众号发起,总读者约25万. 主要面向人工智能领域的从业者,涵盖图像处理.三维计算机视觉.机器 ...

  4. 新手学习FFmpeg - 调用API完成录屏

    调用FFMPEG Device API完成Mac录屏功能. 调用FFMPEG提供的API来完成录屏功能,大致的思路是: 打开输入设备. 打开输出设备. 从输入设备读取视频流,然后经过解码->编码 ...

  5. Leetcode之回溯法专题-78. 子集(Subsets)

    Leetcode之回溯法专题-78. 子集(Subsets) 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = ...

  6. PHP 递归读取无限级分类

    /** * [获取第一级分类] * 20170829 * * @return array */ public function getCateList(){ $this->catelog = [ ...

  7. VS code 进行 flutter 调试时启动后就停止,无法调试的问题

    在编写flutter时,更新需要按 r 或着 R,这就有点麻烦,当然强大的VS code给我们提供了自动更新的功能,那就是调试功能. 首先需要给VS code安装Flutter与Dart插件. 在VS ...

  8. JUC包实现的同步机制,原理以及简单用法总结

    除了用Synchronized关键字修饰同步块,让线程获取某对象的锁实现多线程操作共享变量的同步外,还可以使用java.util.concurrent包.并且,juc包机制下的同步更灵活.juc包的所 ...

  9. Springboot学习与mybatis逆向生成工具

    最近H2数据库越用越觉得方便,在不同办公处无缝继续demo的感觉就是爽.   今天接上一篇Springboot简洁整合mybatis,补上sts(即eclipse)使用mybatis generato ...

  10. Java内部类使用注意事项

    Java内部类使用注意事项: 1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2 public class La ...