折翼的飞鸟

导航

转:Taro生成二维码、条形码

Taro生成二维码、条形码

Taro生成二维码、条形码(小程序、H5)插件使用 taro-code   

github https://github.com/miaonster/taro-code

 
安装:
    taro 3.0 以上版本安装 taro-code,下面的命令改成 yarn add taro-code
 
npm install --save taro-code
or
yarn add taro-code
import { Barcode, QRCode } from 'taro-code'

class Code extends Taro.Component {
  render() {
    return (
      <View>
        <Barcode text='crayon' width={300} height={60} scale={4} />
        <QRCode
          text='crayon'
          size={300}
          scale={4}
          errorCorrectLevel='M'
          typeNumber={2}
        />
      </View>
    )
  }
}

使用方式比较简单,就不多赘述了,现在讲一下其中遇到的问题

该二维码或条形码的生成,其中 width 和 height 是以 px 为单位

而小程序或H5中其宽高应动态适应

使用以下方法,根据你的设计尺寸图来动态计算出对应的 px 值即可(我这里设计图是750)

 

import Taro from '@tarojs/taro';

// 按缩放比例计算对应的px值(主要用于那些只能写死px的canvas等等,用此方法动态计算出px值)
const getPx = ( number, designWidth = 750 ) => {
  const sys = Taro.getSystemInfoSync();
  const scale = sys.screenWidth / designWidth; // 缩放比例
  return Number(number * scale).toFixed(0); // 返回缩放后的值
}

export default {
  px: getPx
}


import { Barcode, QRCode } from 'taro-code'
import _style from '@/utils/style';

class Code extends Taro.Component {
  render() {
    return (
        <Barcode text='crayon' width={_style.px(540)} height={_style.px(160)} />
        <QRCode text='crayon' size={_style.px(316)}  />
    )
  }
}

注:return Number(number * scale).toFixed(0) 我这里限制了小数位, 因为计算出来的值存在无限小数的情况,

width 或 height 存在无限小数的话会导致二维码或条形码生成失败

该插件博主仅在小程序端和H5端使用过,其他端情况暂时不明

原文地址: 

 

posted on 2021-09-26 10:36  折翼的飞鸟  阅读(1583)  评论(0编辑  收藏  举报