讲解开源项目:用 Python 生成有“灵魂”的二维码

本文作者:HelloGitHub-LITTLECHIEH

这是 HelloGitHub 推出的《讲解开源项目》系列,今天给大家推荐一个 Python 开源生成二维码的项目——qrcode

一、介绍

1.1 二维码

二维码又称二维条码,常见的二维码为 QR Code,QR 全称 Quick Response。是一个近几年来移动设备上超流行的一种编码方式,在现在的生活中二维码随处可见。我们可以用它支付、浏览网站等,为什么他会这么流行?下面说几个特点:

  1. 可存储的信息量大:可容纳多达 1850 个大写字母或 2710 个数字或 1108 个字节或 500 多个汉字。
  2. 容错能力强:具有纠错功能,这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达 30% 仍可恢复信息。
  3. 译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。
  4. 激光可识别。

比如我们现在常见的公众号二维码,他就利用了二维码容错能力强的特点,在二维码中间加入了公众号的图标。虽然中间的图片遮盖了一部分二维码的真实数据,但因为其强大的容错能力,所以并没有影响二维码要传递的数据。

1.2 二维码的组成

一图胜千言,好了这里二维码的基本知识就介绍完成了。

1.3 生成二维码库

二维码是一个很方便的传递信息的载体,但是像上面黑白的二维码感觉非常缺少‘灵魂’。下面就介绍今天的主角:qrcode

这是一个由 Python 编写的二维码生成器,支持生成 GIF 动态、图片二维码,让你的二维码变得有趣起来。

项目地址:https://github.com/sylnsfar/qrcode

二、qrcode 库的优点

为什么需要使用到这个二维码生成器来生成二维码呢?

  1. 使用简单:快速上手,仅需 2 行代码,即可开始使用!
  2. 在二维码中增加图片:可以让用户通过二维码中的图片,初步了解该二维码是和什么东西有关。(该二维码加入了 HG 的 logo)

  1. 在二维码中增加动图:通过动图,让二维码活过来。

  1. 使用方式多样:有以下的 3 种使用方式

  2. 用就对了:我不要你觉得,我要我觉得 滑稽

三、快速上手

演示环境

操作系统:Windows | Python 版本:3.5

3.1 安装

我们通过 Python 的 pip 包管理工具进行安装:

pip install myqr

注:此处可能需要升级 pip,升级命令 pip install --upgrade pip

安装完成之后,就可以直接在命令行中使用了!下面逐一讲解各种二维码的生成方法

3.2 普通二维码

首先生成一个普通二维码

  1. 打开 cmd
  2. 输入命令
    bash myqr https://github.com -n helloword.png
    参数 -n:生成二维码的文件名

这样就会得到一个二维码图片,生成的图片保存在了当前目录,后面可以通过传入参数修改默认目录。

3.3 彩色二维码

  1. 先准备一张图片放在目录下(方形的图片效果最好)

  2. 将图片名称修改为 github.jpg(后缀根据自己的照片格式而定)
  3. 在命令行中输入:
    bash myqr https://github.com -n mypicture.png -p github.jpg -c
    参数:

    • -n:生成二维码的名称
    • -p:二维码加入的图片,支持 jpg、gif、png 格式
    • -c:选择是否生成彩色二维码,如果不设置默认为黑白
    • 更多参数请看下面附录部分

3.4 动态二维码

步骤和彩色二维码的方法一致,但是需要注意:

  1. 增加图片为 gif
  2. 修改生成二维码的后缀为 gif

四、附录

4.1 MyQR 参数

从官方文档整理的常用参数如下:

  • -n:生成二维码的名称
  • -p:二维码加入的图片,支持.jpg.gif.png.bmp 格式
  • -c:选择是否生成彩色二维码,如果不设置默认为黑白
  • -v:控制边长,范围是 1 至 40,数字越大边长越大
  • -l:控制纠错水平,范围是 L、M、Q、H 从左到右依次升高
  • -d:控制输出二维码的存储位置
  • -con:用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为 1.0
  • -bri:用来调节图片的亮度,其余用法和取值与 -con 相同

4.2 cmd 切换盘符

打开命令行有个小技巧,可以将 cmd 迅速切换到想要的目录,避免了切换盘符的麻烦:

  1. 利用文件管理,找到目标文件夹
  2. 顶部地址栏输入 cmd,然后‘回车‘

  1. 切换盘符的坑:直接切换盘符会失败

4.3 二维码分类介绍

二维码有以下几种分类

  1. 黑白和彩色码

    • 黑白码
    • 彩色码
  2. 融合和视觉码
    • 融合码:就是将内容与二维码融合使它们成为一个整体,图片由二维码组成,二维码就是图片的一部分。这种比较适合使用构造简单的图片或者文字做美化主体内容
    • 视觉码:以图片为背景,再在图片上构建很多特殊的点,这些点不会影响背景的视觉效果

  3. 艺术码
    • 艺术二维码,就是将二维码进行的各个“码眼”按照设计师的构思进行分析、拆解、合并,再在那些“码眼”区域填充上一些小素材元素,最后形成一个别具特色二维码。

五、最后

以上就是本篇文章的全部内容了,相信你对二维码更加了解了。并且对 qrcode 库的常用参数有了一定了解,那就快去生成一个有趣、有‘灵魂’的二维码吧!

有好玩的库,但不会用,看着干着急?欢迎告诉我们,同时也欢迎加入我们。我们的愿景:
“让对开源感兴趣的人不再畏惧,开源项目的发起者不再孤单。”

六、参考资料



『讲解开源项目系列』——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系我们、加入我们,让更多人爱上开源、贡献开源~

原文地址:https://www.cnblogs.com/xueweihan/p/11503244.html

时间: 2024-11-01 16:13:56

讲解开源项目:用 Python 生成有“灵魂”的二维码的相关文章

python 生成待图片的二维码代码

imge.show()在Liunx下可能不行. ps:标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后使用xv进行显示.如果没有安装xv,该函数甚至不能工作.但是该方法非常便于debug和test.(windows中应该调用默认图片查看器打开) 代码如下: #-*-coding:utf-8-*- #这是一个二维码的生成代码 import qrcode import os from PIL import Image import Pillow print() clas

涛哥的Python脚本工具箱之生成带Logo的二维码

近期须要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个. 须要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为高速响应矩阵码,是二维条码的一种.由日本的 Denso Wave 公司于 1994 年发明. 现随着智能手机的普及.已广泛应用于寻常生活中,比如商品信息查询.社交好友互动.网络地址訪问等等. 安装 Python 的二维码库 -- qrcode pip install qrcode 因为生成 qrcode 图

.NET使用ZXing.NET生成中间带图片的二维码

很久之前就有写这样的代码了,只是一直没记录下来,偶然想写成博客. 把之前的代码封装成函数,以方便理解以及调用. 基于开源的 ZXing.NET 组件,代码如下: 先添加对ZXing.NET的引用,然后添加相应的命名空间: using System; using System.Collections.Generic; using System.Drawing; using ZXing; using ZXing.Common; using ZXing.QrCode; using ZXing.QrCo

C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一)

一.ZXing.Net 源代码地址:http://zxingnet.codeplex.com/ 也可以使用Nuget包管理,添加如图: 说明:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和Android.现在也有了对应的.Net版本 二.生成二维码 将字符编码时可以指定字符格式:默认为ISO-8859-1英文字符集,但一般移动设备常用UTF-8字符

微信公众平台 怎样生成带参数的二维码

添加带参数二维码 1.选择要添加带参数二维码的认证服务号--功能管理--高级功能--渠道二维码生成--+创建渠道二维码 1.1.渠道名称:可以理解为一个推广员(门店)一个渠道的名称: 1.2.触发关键词:即粉丝扫描这个二维码后直接弹出的回复内容,可以多个渠道共用一个关键词,也可以每个渠道用一个关键词: 1.3.扫码统计对象:可以统计新.老粉丝的关注取消数据: 1.4.粉丝识别标识:打标签及分组: 1.5.保存:添加好渠道名称和触发关键词就会直接生成这个渠道的二维码,直接点击[获取二维码]即可得到

微信公众平台功能开发(生成带参数的二维码)

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000).两种二维码分别适用于帐号绑定.用户来源统计等场景. 用户扫描带场景值二维码时,可能推送以下两种事件: 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事

C#微信开发之旅(六):生成带参数的二维码

主要用来推广并统计数据,当用户扫描带参数二维码时,微信会推送消息到我们的服务器,此时可以根据参数了解到用户是从哪个渠道关注的.话不多少,先来代码: 1 #region 生成二维码 2 3 /// <summary> 4 /// 获取Ticket 5 /// </summary> 6 /// <returns></returns> 7 private static string CreateTicket(string scene_id) 8 { 9 var t

微信公众号开发(三)生成带参数的二维码

微信公众号开发之生成带参数的二维码 做微信公众号开发的人员都知道用户海报作为公众号吸引用户是常见的渠道,那么我就说说这个海报的生成. 看了好多公众号发现他们的海报都是大同小异,一个漂亮的背景+自己的头像+专属二维码. 背景就不阐述了,用户的头像可以由公众号开发文档提供的方式获取(根据用户的openId),今天主要讲用户的专属二维码 所谓专属即便是一对一的. 二维码分为两种,临时二维码和永久二维码 /*生成永久二维码*/ public static String getPerpetualQR(St

微信接口开发之高级篇系列【用户分组接口和生成带参数的二维码】

<?php /** * Created by PhpStorm. * User: Tinywan * Date: 2016/9/11 * Time: 10:00 */ namespace Home\Controller; use Org\Util\WechatAuth; use Think\Controller; class UserController extends Controller { private $appid; private $appSecret; private $Wecha