首页 > 其他分享 >使用 jsqr 解析二维码图片内容

使用 jsqr 解析二维码图片内容

时间:2023-08-23 11:57:21浏览次数:31  
标签:mycanvas img height width 二维码 let jsqr 解析

npm install jsqr

 

<template>
  <div>
    <button type="primary" @click="handUpload">上传图片</button>
    <div style="display: none;">
      <input type="file" accept="image/png, image/jpeg" ref="fileInput" @change="changeFile" />
      <img id="myimg">
      <canvas id="mycanvas"></canvas>
    </div>
  </div>
</template>

 

import jsQR from "jsqr"

handUpload() {
  this.$refs['fileInput'].click()
},
// 解析二维码中的文本、上传图片是否是二维码
changeFile(e) {
  let fileReader = new FileReader();
  fileReader.onload = function(event) {
    let data = event.target.result;
    let img = document.getElementById("myimg");
    img.src = data;

    img.onload = function() {
      let mycanvas = document.getElementById("mycanvas");
      let ctx = mycanvas.getContext("2d");
      // canvas 的width/height重新设置的时候会清空画布
      mycanvas.width = img.width;
      mycanvas.height = img.height;

      ctx.drawImage(img, 0, 0);
      let imageData = ctx.getImageData(0, 0, img.width, img.height);
      
      const code = jsQR(imageData.data, imageData.width, imageData.height);
      
      if(code) console.log("解析出来的文本:", code.data)
      else console.log("%c上传图片未识别到二维码", "color: #f00;")
    }
  }
  fileReader.readAsDataURL(e.target.files[0]);
},

 

注:二维码最中心如果是微信图标时,将扫描不出来

 

标签:mycanvas,img,height,width,二维码,let,jsqr,解析
From: https://www.cnblogs.com/chensv/p/17650814.html

相关文章

  • 技术的巅峰演进:深入解析算力网络的多层次技术设计
    在数字化时代的浪潮中,网络技术正以前所未有的速度演进,而算力网络作为其中的一颗明星,以其多层次的技术设计引领着未来的网络构架。本文将带您深入探索算力网络独特的技术之旅,从底层协议到分布式控制,为您呈现这一创新网络的魅力。**演进之源:多层次技术设计**算力网络的创新之处在于其......
  • Springboot生成二维码整合
    Springboot生成二维码整合我们使用两种方式,去生成二维码,但是其实,二维码的生成基础,都是zxing包,这是Google开源的一个包,第一种是使用原始的zxing方式去实现,第二种是使用hutool来实现,hutool其实也是对于zxing的一个封装,但是封装前后,确实比较简单了。Zxing原生方式添加依赖<!--zx......
  • mall :sa-token项目源码解析
    目录一、mall开源项目1.1来源1.2项目转移1.3项目克隆二、Sa-Toekn框架2.1Sa-Token简介2.2分布式后端项目的使用流程2.3分布式后端项目的使用场景三、源码解析3.1集成与配置3.1.1导入依赖3.1.2添加配置3.1.3异常处理3.1.4存储用户信息3.2登录认证3.2.1配置黑白名单3.......
  • java实现大文件上传实例解析
    ​  上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这......
  • java-javaParse解析类的方法名称,行数等
    importcom.github.javaparser.JavaParser;importcom.github.javaparser.ast.CompilationUnit;importcom.github.javaparser.ast.PackageDeclaration;importcom.github.javaparser.ast.body.ClassOrInterfaceDeclaration;importcom.github.javaparser.ast.body.Method......
  • 4.8 C++ Boost 应用JSON解析库
    property_tree是Boost库中的一个头文件库,用于处理和解析基于XML、Json或者INFO格式的数据。property_tree可以提供一个轻量级的、灵活的、基于二叉数的通用容器,可以处理包括简单值(如int、float)和复杂数据结构(如结构体和嵌套容器)在内的各种数据类型。它可以解析数据文件到......
  • 4.9 C++ Boost 命令行解析库
    命令行解析库是一种用于简化处理命令行参数的工具,它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息。C++语言中,常用的命令行解析库有许多,通过本文的学习,读者可以了解不同的命令行解析库和它们在C++项目中的应用,从而更加灵活和高效地处理命令行参数。一般比较常见的解......
  • 构建智能医疗未来:解析互联网医院与在线问诊APP的技术创新
     互联网医院和在线问诊APP的创新不仅为患者提供了更灵活的医疗选择,也为医务人员提供了更高效的工作方式。接下来,小编将于大家深入探讨互联网医院和在线问诊APP的技术创新,以及它们对未来智能医疗的影响。一、互联网医院的兴起互联网医院作为数字时代的产物,为患者提供了远程医疗的机......
  • 4.8 C++ Boost 应用JSON解析库
    property_tree是Boost库中的一个头文件库,用于处理和解析基于XML、Json或者INFO格式的数据。property_tree可以提供一个轻量级的、灵活的、基于二叉数的通用容器,可以处理包括简单值(如int、float)和复杂数据结构(如结构体和嵌套容器)在内的各种数据类型。它可以解析数据文件......
  • 4.9 C++ Boost 命令行解析库
    命令行解析库是一种用于简化处理命令行参数的工具,它可以帮助开发者更方便地解析命令行参数并提供适当的帮助信息。C++语言中,常用的命令行解析库有许多,通过本文的学习,读者可以了解不同的命令行解析库和它们在C++项目中的应用,从而更加灵活和高效地处理命令行参数。一般比较常见的解......