python小程序系列一:你会画二维码吗?

还记得六周前的二维码介绍吗?

有没有点心里痒痒想自己手动生成一个二维码呢?

Actually, you can do it without any programming foundation!

二维码DIY

不过我知道你现在一脸懵逼。生成二维码总不能用手画吧……

别着急,准备工作要充足:

安装Python环境,不然我们啥都干不了,或者你可以选择真的手绘二维码。下载地址:https://www.python.org/downloads(建议下载3.6.6 版本)

安装pyCharm作为编程软件,这样方便我们编程(除非你是可以用txt文件编程的大佬)下载地址:https://www.jetbrains.com/pycharm/downloads

当然这还不够,到目前为止我们依旧得手绘二维码(扎心.jpg),但是python是个很贴心的家伙 ---- 他已经给我们写好了生成二维码的“快捷键”。 只有一个快捷键不够,我们还需要把二维码转换成图片,这样才能显示和储存。所以我们需要安装并调用两个库文件

安装方式:

打开cmd窗口(windows) / terminal窗口(mac)

输入cd + 空格 + python安装的位置(比如我用的mac,然后python默认安装在应用程序这个路径下,所以我需要这么写:cd /Applications)

输入pip install qrcode回车,等待一会儿会出现安装的确认, 输入y 回车,即可自动安装 qrcode这个库文件

相同的方式安装pillow库文件

输入pip list就可以查看python的目录下面安装了几个包,检查qrcode和pillow是否在列

ps:如果任何安装过程中有问题可以在公众号里问我或者咨询度娘

好消息:

准备了这么久,终于要开始编程了!!

01

调用库文件

首先我们要调用一下刚才费劲心思安装的两个库文件。毕竟你要让电脑在知道你在用这两个库,否则它就会在编译的时候烦人地搞出一堆红线。调用方式看图说话:

02

超超超简单的二维码生成方式

basically我们已经可以生成二维码了,只需要敲上这样两行代码,你就可以出去跟不明所以的同伴吹嘘说自己已经成为了一个程序大(cai)佬(niao)

当然,这只是一个开胃菜,下面逼格会越来越高~~~

03

真正的DIY二维码生成方式

那么如何提高逼格呢?在写代码之前,不妨回忆一下我之前发的那篇二维码原理的推文。

在文中我曾提到二维码有不同的大小(version),以及纠错率(error correction rate)。可以说这两个是生成二维码中很重要的参数。想要提高逼格自己DIY二维码,最简单的方式就是从这两个参数入手。(By the way,参数可以近似地看成二次元中人物的设定,以后有机会讲python语法的时候我会仔细来说)

那么你肯定会问,这两个参数怎么调呢?刚刚的两行里面也没看见version和error correction rate啊?所以这里我们就要换成这样一串代码:

别慌,我来分析一下这段代码的思路:

可以看到从代码的第一行到第四行括号内部的都是二维码的参数,通过改变等号右边的数值或者内容,你可以随心所欲地生成各种样式的二维码

接下来就是熟门熟路的把内容放进去,转换成图片,再展示出来。

下面是最激动人心的时刻!!!

04

生成中心带logo的二维码

作为一个有密集恐惧症的人来说,密密麻麻的黑色方块的二维码看着难受死了,忍不了。所以不妨在二维码中心加一个logo调整心情。可是logo不是喊一声它就会自己跑上去的,所以还是要苦逼地一行一行敲代码:

不管怎么样,二维码还是要首先生成的,毕竟这才是关键。不过这次除了生成二维码,还需要把二维码图片转换成彩色,不然生成出来的logo就会是黑白的。另外,还要储存生成的二维码的长宽。这个是为什么很快你就会知道了。

从这里就开始为中心的logo做准备了。首先从电脑里面导入图片,通过图片在电脑中的存储路径。但是导入了之后怎么知道图片该设置成多大的呢?这个时候我们之前储存的二维码的长宽就派上用场了。为了美观,logo的尺寸与二维码尺寸的长宽比例最好相同,所以我们根据合适的缩小倍数就可以做出合适的logo

最后的几步就是把logo放到之前生成的二维码上合适的位置,加上白边。值得注意的是,图片上的每一个像素点就像坐标轴的每一个数值一样,合在一起构成了类似坐标轴的第四象限的网格。所以我们把二维码图片到左上角当成坐标轴的原点,通过计算logo左上角顶点的坐标来确定他的位置。所以(img_wide - logo_wide) / 2 是X坐标,(img_height - logo_height) / 2是y坐标。而白边的大小和位置又是根据logo的大小来确定的。这些就是简单的数学计算了。

不出意外的话,你会得到一个类似这样的二维码。是不是自豪感油然而生呢?快去试试手吧!

关注布尔吧

学习更多酷酷的程序

成为一个酷酷的人

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180808G1US3N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券