vue3里前端生成二维码和解析二维码(不需要后端参与)

2024-07-21 1599阅读

1.生成二维码

        1)安装qrcode

 npm install qrcode

        2)生成二维码代码

    
    
    生成二维码
    
    


    import QRCode from 'qrcode';
    const formData = ref({
      designation:'',
      people:'',
    })
    const QRCodeType = ref(0)
    // 生成二维码
    const generateQRCode = async () => {
      try {
        // 获取 canvas 元素的引用
        const canvas = document.querySelector('canvas');
        // 将输入字段合并成一个字符串
        let data = generateString(formData.value);
        console.log(data)
        // 使用 qrcode 库生成二维码
        await QRCode.toCanvas(canvas, data || '', { errorCorrectionLevel: 'H' });
        QRCodeType.value = 1
      }catch (error) {
        console.error('Error generating QR code:', error);
      }
    // 对象合成字符串的方法
  const generateString = (formData) => {
    let result = ''
    for (const key in formData) {
      if (formData.hasOwnProperty(key)) {
        result += formData[key] + ','
      }
    }// 去掉末尾的逗号
    result = result.slice(0, -1)
    return result
  }
};

2.解析二维码

        1)安装  jsqr

npm install jsqr

        2)解析二维码代码

                父组件
    


import parseQRCode from './components/parseQRCode.vue'
// 获取得到的二维码数据
const getCodeData = (vm) =>{
  const codeData = vm.split(',');
  console.log(codeData,'获取得到的二维码数据',vm)
  formData.value.designation = codeData[0]
  formData.value.people = codeData[1]
}
                子组件
  
    从图像二维码导入
    
    { decodedValue }}
    
    
      未找到二维码
     -->
  


import { ref } from 'vue';
import jsQR from 'jsqr';
const decodedValue = ref(null);
const emits = defineEmits([
  'get-code-data', 
])
const openFileInput = () => {
  const fileInput = document.getElementById('fileInput');
  if (fileInput) {
    fileInput.click();
  }
};
const handleFileChange = (event) => {
  const file = event.target.files[0];
  if (!file) return;
  const reader = new FileReader();
  reader.onload = (event) => {
    const image = new Image();
    image.onload = () => {
      const canvas = document.createElement('canvas');
      const context = canvas.getContext('2d');
      canvas.width = image.width;
      canvas.height = image.height;
      context.drawImage(image, 0, 0);
      const imageData = context.getImageData(0, 0, image.width, image.height);
      const code = jsQR(imageData.data, image.width, image.height);
      if (code) {
        decodedValue.value = code.data;
        emits('get-code-data', code.data);
      } else {
        decodedValue.value = null;
      }
    };
    image.src = event.target.result;
  };
  reader.readAsDataURL(file);
};

vue3里前端生成二维码和解析二维码(不需要后端参与)
(图片来源网络,侵删)
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]