最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何利用Qrcode制作一个二维码生成器?

    正文概述 掘金(徐小夕)   2020-12-18   676

    玲琅满目的二维码在我们的都市和朋友圈中随处可见, 很多平台都提供了定制二维码的服务, 那么作为一名程序员, 我们如何自己实现一个简单的二维码生成器呢? 接下来笔者就来带大家一起利用Qrcode实现一个二维码生成器.

    效果预览

    如何利用Qrcode制作一个二维码生成器? 由上图可以看出我们可以自定义二维码的:

    • 文本(比如url, 一段文本)
    • 二维码尺寸
    • 二维码背景色
    • 二维码前景色
    • 二维码级别
    • 自定义二维码中展示的icon以及icon的位置, 大小

    在开发之前我们需要先了解:

    • 什么是QR Code码
    • Qrcode的基本用法
    • 以及如何设计一个健壮的组件

    笔者不会介绍二维码的详细实现原理, 因为相关文章很多, 我们从实用的角度出发来解决实际问题.

    QR Code码

    关于QR Code码我们需要知道2个核心的知识, 也就是 QR Code数据表示方法以及纠错能力.

    • QR Code数据表示方法 : 深色模块表示二进制"1",浅色模块表示二进制"0"。
    • 纠错能力
      • L级:约可纠错7%的数据码字
      • M级:约可纠错15%的数据码字
      • Q级:约可纠错25%的数据码字
      • H级:约可纠错30%的数据码字

    了解以上两个知识对于我们实现定制二维码非常由帮助. 在使用Qrcode这个插件时也会用到.

    Qrcode基本使用记忆如何包装成自定义受控组件

    因为我们大多数项目目前都采用react或者vue开发了, 所以我们直接用对应的插件版本即可, 这里笔者使用的是qrcode.react. 如何利用Qrcode制作一个二维码生成器? 从使用量上看这个库还是非常不错的, 我们只需要2-3步就可以快速利用它生成一个静态二维码.

    要想实现一个二维码生成器, 首先我们需要能自定义二维码的属性, 也就是笔者开头列举的几项, 所以这些属性我们完全要从外部获取, 也就是说二维码组件我们要做成受控的, 如下: 如何利用Qrcode制作一个二维码生成器? 由上图我们得到了如下的react组件模式:

    <div className={styles.codeWrap}>
      <QRCode value={url} size={codeSize} bgColor={bgColor} fgColor={fgColor} imageSettings={{src: imgUrl[0].url, x: null, y: null, excavate: true, height: imgH, width: imgW}} />
    </div>
    

    其实就需要用到我们强大的表单渲染器了, 我们需要给qrcode组件对接一个表单编辑器, 也就是下图所示的FormEditor: 如何利用Qrcode制作一个二维码生成器?

    为了简单起见笔者直接用H5-Dooring提供的FormEditor, 我们只需要写如下json结构就可以自动生成一个Form编辑器, 如下:

    const Qrcode: IQrcodeSchema = {
      editData: [
        {
          key: 'url',
          name: 'url地址',
          type: 'Text',
        },
        {
          key: 'codeSize',
          name: '二维码尺寸',
          type: 'Number',
        },
        {
          key: 'bgColor',
          name: '背景色',
          type: 'Color',
        },
        {
          key: 'fgColor',
          name: '前景色',
          type: 'Color',
        },
        {
          key: 'level',
          name: '等级',
          type: 'Select',
          range: [
            {
              key: 'L',
              text: '低',
            },
            {
              key: 'M',
              text: '中',
            },
            {
              key: 'Q',
              text: '良',
            },
            {
              key: 'H',
              text: '高',
            },
          ],
        },
        {
          key: 'imgUrl',
          name: '二维码图标',
          type: 'Upload',
          isCrop: true,
          cropRate: 1,
        },
        {
          key: 'imgW',
          name: '图标宽度',
          type: 'Number',
        },
        {
          key: 'imgH',
          name: '图标高度',
          type: 'Number',
        },
      ],
      config: {
        url: 'https://github.com/MrXujiang/h5-Dooring',
        codeSize: 180,
        bgColor: 'rgba(255,255,255,1)',
        fgColor: 'rgba(0,0,0,1)',
        level: 'L',
        imgUrl: [
          {
            uid: '001',
            name: 'image.png',
            status: 'done',
            url: `http://xxxx.jpg`,
          },
        ],
        imgW: 48,
        imgH: 12
      },
    };
    
    export default Qrcode;
    

    此时我们就能渲染出文章开头的二维码生成器了, 我们可以定制自己喜欢的二维码风格和icon. 编辑器中的等级选项也就是笔者在开头介绍的QR Code的纠错能力, 我们可以自定义选择我们需要的等级.

    目前笔者已经把二维码生成器集成到开源项目H5-Dooring中了,

    在线把玩地址(电脑端体验更佳): H5编辑器 | 更新二维码生成器组件

    往期推荐

    复盘node项目中遇到的13+常见问题和解决方案

    如何搭积木式的快速开发H5页面?

    手撸一个在线css三角形生成器

    前端高效开发必备的 js 库梳理


    起源地下载网 » 如何利用Qrcode制作一个二维码生成器?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元