51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1022|回复: 0
打印 上一主题 下一主题

[python] Python与二维码的故事你想听吗?

[复制链接]
  • TA的每日心情
    擦汗
    前天 09:08
  • 签到天数: 947 天

    连续签到: 6 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-10-13 14:46:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    交代背景
      作为一名合格的 Python 程序员,在工作中必然会用到二维码相关操作,那如何快速的用 Python 实现呢?别着急,咱们这篇博客就为你解决。
      暂时用不到也没有关系,点赞+收藏,毕竟这么全的文章也不好找。
      文章会为大家带来最常见,最简单,最实用的 4 种 Python 二维码生成方式。
      pyqrcode 实现二维码
      上来为你展示的就是一款第三方二维码模块,开源高效才是当今编码界的主流。
      pyqrcode 是一款 老牌 二维码生成模块了,安装之后三行代码就能搞定一个简单的二维码图片。
    1. <font size="3">pip install pyqrcode</font>
    复制代码
    模块安装之后,直接展示入门 Demo,为了可以生成图片,还需要额外安装一个模块,即 pip install pypng。
    1. <font size="3">import pyqrcode

    2.   import png

    3.   qr = pyqrcode.create('梦想橡皮擦')

    4.   qr.png('ca.png', scale=5)</font>
    复制代码
    运行代码,直接生成一个文本二维码,由于部分站点屏蔽二维码图片内容,可自行使用手机进行扫码测试。
    1. <font size="3">除生成 PNG 图片外,还可以直接生成一个 svg 图片。

    2.   import pyqrcode

    3.   import png

    4.   qr = pyqrcode.create('梦想橡皮擦')

    5.   # qr.png('ca.png', scale=5)

    6.   qr.svg("./ca.svg", scale=8, background="white", module_color="#03a9f4")</font>
    复制代码
    上述方法中的参数不做特殊说明,相信大家通过参数名直接学习掌握,详细参数说明也可以阅读官方手册,进行简单搜索即可找到。
    1. <font size="3">import pyqrcode

    2.   import png

    3.   qr = pyqrcode.create('梦想橡皮擦')

    4.   # qr.png('ca.png', scale=5)

    5.   # qr.svg("./ca.svg", scale=8, background="white", module_color="#03a9f4")

    6.   qr.png('./code.png', scale=5, m</font>
    复制代码
    qrcode 实现二维码
      第二个推荐的模块与上一模块名称雷同,也是比较老牌的第三方模块,而且该模块在实战中出场频率非常高。

    1. <font size="3">pip install qrcode</font>
    复制代码
    为了快速学习,直接查看示例代码:
    1. <font size="3"> import qrcode

    2.   qr = qrcode.QRCode(

    3.       version=None,

    4.       error_correction=qrcode.constants.ERROR_CORRECT_L,

    5.       border=4,

    6.       box_size=10

    7.   )

    8.   img = qrcode.make('梦想橡皮擦',version=4,border=4,box_size=12)

    9.   img.save('ca.jpg')  # 保存图片</font>
    复制代码
    qrcode 模块中最重要的方法是 qrcode.QRCode,其参数简单说明如下:
      ·version:二维码大小,1-40 不等;
      · error_correction:二维码纠错范围,4 个常量值在下文说明;
      · box_size:二维码中每个小格子包含的像素数;
      · border:边框,二维码与图片边界的距离。
      二维码纠错范围,可以选择 4 个常量:
      1. ERROR_CORRECT_L: 7%以下的错误会被纠正;
      2. ERROR_CORRECT_M (默认值): 15%以下的错误会被纠正;
      3. ERROR_CORRECT_Q:25%以下的错误会被纠正;
      4. ERROR_CORRECT_H:30%以下的错误会被纠正。
      MyQR 实现二维码
      又一款二维码生成模块,安装命令如下所示:

    1. <font size="3">pip install MyQR</font>
    复制代码
    该模块比较年轻,需要将 pillow 升级到最新版本,使用如下命令:
    1. <font size="3"> pip install pillow>=8.3.2</font>
    复制代码
    先看一下普通的二维码生成:
    1. <font size="3">from MyQR import myqr

    2.   myqr.run(words="cacaca", version=9,

    3.            save_name="ca1.png",

    4.            save_dir="./")</font>
    复制代码
    该二维码模块的一大特色就是可以实现动图效果,代码如下:
    1. <font size="3">from MyQR import myqr

    2.   myqr.run(words="https://juejin.cn/user/3966693684027512", version=3, picture="./in.gif", colorized=True,

    3.            save_name="ca.gif",

    4.            save_dir="./")</font>
    复制代码
    动图也给你准备好了。
      run() 方法中主要的几个参数说明如下:
      ·words:二维码文本内容(不支持中文);
      · picture:背景图片;
      · colorsize:True,表示生成彩图;
      · save_name:二维码图片的名字。
      Amazing-QR 实现二维码
      可生成普通二维码、带图片的艺术二维码(黑白与彩色)、动态二维码(黑白与彩色)。
      安装命令如下所示:

    1. <font size="3">pip install amzqr</font>
    复制代码
    示例代码也非常简单。
    1. <font size="3"> # 安装模块后

    2.   from amzqr import amzqr

    3.   import os

    4.   version, level, qr_name = amzqr.run(

    5.       'cacaca',

    6.       version=1,

    7.       level='H',

    8.       picture=None,

    9.       colorized=False,

    10.       contrast=1.0,

    11.       brightness=1.0,

    12.       save_name='ca_amzqr.png',

    13.       save_dir=os.getcwd()

    14.   )</font>
    复制代码
    中文识别也不是很好,需要进行修改,如果觉得参数过多,可以直接进行简化,只保留 words 参数即可。
    1. <font size="3"> from amzqr import amzqr

    2.   amzqr.run(words='https://juejin.cn/user/3966693684027512')</font>
    复制代码
    默认在运行目录生成一个名称为 qrcode.png 的图片。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-13 05:22 , Processed in 0.060708 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表