@cleardusk
2016-02-23T13:41:38.000000Z
字数 994
阅读 1529
博客
二维码现在太普及了,早就想涉猎一下二维码的相关知识了,今天抽了点时间看了看二维码的知识点。准确点说,微信支付宝用的是 QR code,QR Code 是二维条码的一种,二维条码还有汉信码、EZ 码等类型。参见维基链接可以详细了解 QR Code:https://en.wikipedia.org/wiki/QR_code。
QR 全称是 Quick Response,设计的初衷就是为了能够快速解码。QR Code 本质上是信息传递的一种媒介与载体,将信息编码到 QR Code 中,然后通过解码器解码,QR 的特点就在于能够快速地将信息解码出来。微信的扫一扫就是一个解码器。
粗略看了看 QR Code 的原理,细节很繁琐,虽然不难但需不少时间。为了快速体验一番,我找到了这个项目:https://github.com/lincolnloop/python-qrcode
这是纯 python 写的 QR Code 生成器。
下面是用 qrcode 库生成 QR Code 的一个简单的 demo:
import qrcode
data = 'hello world!'
filename = 'demo.png'
qr = qrcode.QRCode()
qr.add_data(data)
qr.make()
img = qr.make_image()
img.save(filename)
当然,还有更快捷的写法:
import qrcode
img = qrcode.make('hello world!')
img.save('demo.png')
这是上面用的方法生成的二维码:
如果接触过命令行的话,直接在 shell 中调用 qr
程序就行了。比如:
qr "hello world" > test.png
下面几个是生成 svg 矢量格式的图片的命令,fragment
选项会在像素格子间生成裂缝。实现的原理,猜测是在程序内部将栅格数据转换为 svg 矢量格式。
qr --factory=svg-path "hello world!" > test.svg
qr --factory=svg "hello world!" > test.svg
qr --factory=svg-fragment "hello world!" > test.svg
以下就是生成的二维码图片,用微信扫一扫(长按图片,最下面的选项),看看里面是什么内容吧~
别看这么大一张图片,才 1.6k 大小,不会耗用啥流量的!