—恢复内容开始—

一、插件安装

  首先是插件的安装与引入,这里我们用的是qrcode的这个插件,直接使用npm install qrcodejs2安装即可,但是这里要注意,如果你用的是ts进行开发的话,这时候用传统的import将qrcode引进来是不可取的,他会报错:TS7016: Could not find a declaration file for module ‘qrcodejs2’. ‘/node_modules/qrcodejs2/qrcode.js’ implicitly has an ‘any’ type.   Try `npm install @types/qrcodejs2` if it exists or add a new declaration (.d.ts) file containing `declare module ‘qrcodejs2’;`。这里为什么会出现这个问题,我暂不知道,知道的同学们欢迎留言。不过解决方案的话,我们可以参考这个博客:https://blog.csdn.net/mhbsoft/article/details/92842278,这里博客里面已经说得很详细了。

二、二维码生成

  接下来就是插件的使用了,qrcode这个插件的使用,总体来说还是很简单的,它主要是通过获取dom元素,然后通过HTML5 cavans绘制而成的。首先我们需要在html里定义一个放置二维码的dom元素,

<div id="qrcode">
</div>

然后定义一个方法

qrcode(){
  let qrcode = new this.QRCode('qrcode', {
      width: 272, //图像宽度
      height: 272, //图像高度
      colorDark: "#000000", //前景色
      colorLight: "#ffffff", //背景色
      typeNumber: 4,
      correctLevel: this.QRCode.CorrectLevel.H //容错级别 容错级别有:(1)QRCode.CorrectLevel.L (2)QRCode.CorrectLevel.M (3)QRCode.CorrectLevel.Q (4)QRCode.CorrectLevel.H
  })
  qrcode.clear(); //清除二维码
  qrcode.makeCode(this.data.url);//生成另一个新的二维码
}

然后在mouted里面调用这个方法,但是有的项目的mouted不起作用,我们还可以这样,

created(){
  this.$nextTick(()=>{  // $nextTick是指在页面dom元素都加载完了之后再执行里面的方法,从而也起到了一个mouted的作用。
    this.qrcode();
  })
}

以上就是我们生成二维码的全过程了。

三、二维码打包以及导出

二维码已经生成好了,接下来就是打包了,打包的话这里用到了两个插件,分别是jsZIP以及FileSaver,这两个一个是将文件整合成压缩包一个是生成对应的文件目录,引入方法和上面引入qrcode是一样的。接下来我们来看下这个打包方法的实现:

function downImg(imgArr,title) { // imgArr是我们要下载的图片列表,title就是你下载出来的压缩包的名称
    var zip = new JSZip();
    var file_name = '';
    for(let i=0;i<imgArr.length;i++) { // 循环我们传进来的图片列表,为每一张图片赋值
      let item = imgArr[i].img
      let name = imgArr[i].hospital+imgArr[i].department+ imgArr[i].name;  // 每一张图片的名字,可以根据自己的规则生成
      file_name = title + '.zip';  // 生成的文件的名字
      var img = zip.folder(name);  // 生成压缩图片
      var img_arr = item.split(',');

      img.file(name + '.png', img_arr[1], {base64: true}); // 生成图片,采用base64格式
    }
  ·zip.generateAsync({type:"blob"}).then(function(content) {
    ·FileSaver.saveAs(content, file_name); // 生成文件,调用saveAs
  ·});
}

从上面的代码我们可以看出,我们需要将我们要导出的图片的base64地址拿到,然后才可以调用这个方法,于是接下来我们看怎么将图片转成base64格式。

四、绘制我们需要的图片格式

  

版权声明:本文为inkwind原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/inkwind/p/11264020.html