项目地址

平日里,我们看到的二维码是长这样的:

但是你见过动画的二维码么?就像下图这样:

其实,要实现这样的二维码并不难,只要通过一个叫segno的小工具就可以实现了。

这个二维码编辑器可以把二维码的背景换成不同的颜色,图片甚至是gif图片,并且全部程序不需要任何依赖项,并且支持多种格式。

Segno提供了多种序列化格式,如可缩放矢量图形 (SVG)、封装 PostScript (EPS)、便携式网络图形 (PNG)、便携式文档格式 (PDF)、Netpbm(PAM、PBM、 PPM)、LaTeX (PGF/TikZ)、X PixMap (XBM) 和 X Bitmap (XPM) 等。这些序列化程序都不需要外部库。该项目提供了 1500 多个测试用例

Segno具有以下功能特性:

  • 纯 Python 二维码生成器(支持 2.7、3.5+、PyPy2 和 PyPy3)

  • 无依赖

  • 支持多种序列化格式(SVG、PNG、EPS、PDF 等)

  • 最快的(纯 Python)二维码编码器

  • 汉字模式

  • 命令行界面

  • 简单、用户友好的 API

还支持:

  • 彩色二维码
  • Micro QR 码
  • 艺术二维码 (需要qrcode-artistic插件)

安装

  1. Segno安装方法很简单,可以直接使用pip从PyPI安装:
1
$ pip install segno
  1. 接下来,可以直接使用命令行脚本将二维码输出:
1
$ segno "Comfortably Numb"
  1. 要序列化二维码,可以直接使用“output”参数如下:
1
2
3
$ segno -o=raincoat.svg "Famous Blue Raincoat"
$ segno --scale 10 --dark darkblue --border 0 --output=fire.svg "Who by Fire"
$ segno --scale 10 --light transparent --output=miracle.png "Waiting for the Miracle"
  1. 库:
1
2
3
4
5
6
7
8
9
10
11
12
>>> import segno
>>> # Let Segno choose the minimal version and an optimal (maximal) error
>>> # level without changing the minimal version
>>> qrcode = segno.make('Up Jumped the Devil')
>>> qrcode.designator # Returns the QR code version and the error correction level
'2-Q'
>>> qrcode.save('up-jumped-the-devil.png') # Save as PNG
>>> qrcode.save('up-jumped-the-devil-2.png', scale=10) # Scaling factor 10
>>> qrcode.save('up-jumped-the-devil-3.png', light=None) # Transparent light modules
>>> qrcode.save('up-jumped-the-devil.pdf', scale=10) # Save as PDF
>>> # SVG drawing the dark modules in "dark blue"
>>> qrcode.save('up-jumped-the-devil.svg', scale=10, dark='darkblue')

如果二维码的内容足够小,则会生成一个 Micro QR 码:

1
2
3
4
5
6
>>> import segno
>>> qrcode = segno.make('RAIN')
>>> qrcode.is_micro
True
>>> qrcode.designator
'M2-M'