图片处理 - QRCode

优质
小牛编辑
127浏览
2023-12-01

QR码(全称为快速响应矩阵码;英语:Quick Response Code)是二维条码的一种,
于1994年由日本DENSO WAVE公司发明。QR 码使用四种标准化编码模式(数字,字母数字,
二进制和 Kanji)来存储数据。

Python QRCode 库

Python 可以安装 qrcode 库以获取 QR Code 生成的支持。

安装

qrcode 库依赖于 Python Image Library(PIL),不过 PIL 已经停止更新,而且其设计并不符合 Python 规范。
因此推荐使用 PIL 的继任者 Pillow 代替。
安装 PIL 或者 Pillow 需要先安装 C 语言 PIL 库,各操作系统各有不同。
Python PIL 或者 Pillow 的安装可以通过 pip 或者 easy_install

  1. pip install pillow

或者

  1. pip install PIL

安装 Python QRCode:

  1. pip install qrcode

使用 qrcode

QRCode 库提供两种嗲用提供方式——Python 库和系统命令(qr)。

qr 命令

qr 命令的使用如下:

  1. qr some_word[ > some_iamge.png]

qrcode 会根据文字的长度自动选择合适的 QRCode 版本

Python API

Python 下使用 qrcode 库:

  1. import qrcode
  2. qr = qrcode.QRCode(
  3. version=1, # QR Code version,1-4
  4. error_correction=qrcode.constants.ERROR_CORRECT_L, # 错误纠正等级 L、M、Q、H 四等,默认是 M
  5. box_size=10, # QR Code 图片的大小,单位是像素
  6. border=4, # QR Code 的边框,单位是像素,默认 4
  7. )
  8. qr.add_data('Some data') # 想要添加到 QR Code 中的内容
  9. qr.make(fit=True)
  10. img = qr.make_image()

默认输出格式是 JPG,生成 SVG 需要设定 image_factory 参数:

  1. import qrcode
  2. import qrcode.image.svg
  3. if method == 'basic':
  4. # Simple factory, just a set of rects.
  5. factory = qrcode.image.svg.SvgImage
  6. elif method == 'fragment':
  7. # Fragment factory (also just a set of rects)
  8. factory = qrcode.image.svg.SvgFragmentImage
  9. else:
  10. # Combined path factory, fixes white space that may occur when zooming
  11. factory = qrcode.image.svg.SvgPathImage
  12. img = qrcode.make('Some data here', image_factory=factory)

如果需要 PNG 支持,还需要安装第三支持:

  1. pip install git+git://github.com/ojii/pymaging.git#egg=pymaging
  2. pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png

依旧是设定 image_factory 设置输出格式为 PNG:

  1. import qrcode
  2. from qrcode.image.pure import PymagingImage
  3. img = qrcode.make('Some data here', image_factory=PymagingImage)