Skip to content

yas78/QRCodeLibPy

Repository files navigation

QRCodeLibPy

QRCodeLibPyは、Python3で書かれたQRコード生成ライブラリです。
JIS X 0510に基づくモデル2コードシンボルを生成します。

特徴

  • 数字・英数字・8ビットバイト・漢字モードに対応しています
  • 分割QRコードを作成可能です
  • 1bppまたは24bpp BMP、PPM、XBM SVG形式でファイルに保存可能です
  • Base64エンコードされたBitmapデータを取得可能です
  • 画像の前景色、背景色を指定可能です
  • 8ビットバイトモードでの文字コードを指定可能です

クイックスタート

qrcodelibパッケージをインポートしてください。

デモ

TkInter版は TkInterDemo.py 。WxPython版は WxPythonDemo.py モジュールを実行してください。
WxPython版はWxPythonのインストールが必要です。

使用方法

例1.単一シンボルで構成される(分割QRコードではない)QRコードの、最小限のコードを示します。

import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")

symbol = symbols.item(0)

例2.誤り訂正レベルを指定する

Symbolsクラスのコンストラクタ引数に、ErrorCorrectionLevelクラスの定数を設定します。

import qrcodelib as qr

symbols = qr.Symbols(qr.ErrorCorrectionLevel.L)

例3.型番の上限を指定する

Symbolsクラスのコンストラクタで設定します。

import qrcodelib as qr

symbols = qr.Symbols(max_version=10)

例4.8ビットバイトモードで使用する文字コードを指定する

Symbolsクラスのコンストラクタで設定します。

import qrcodelib as qr

symbols = qr.Symbols(byte_mode_encoding="utf-8")

例5.分割QRコードを作成する

Symbolsクラスのコンストラクタで設定します。型番の上限を指定しない場合は、型番40を上限として分割されます。

import qrcodelib as qr

symbols = qr.Symbols(allow_structured_append=True)

型番1を超える場合に分割し、各QRコードをファイルへ保存する例を示します。

import qrcodelib as qr

symbols = qr.Symbols(max_version=1, allow_structured_append=True)
symbols.append_text("abcdefghijklmnopqrstuvwxyz")

for i in range(symbols.count):
    symbols.item(i).save_bitmap(f"qrcode_{str(i)}.bmp")

例6.ファイルへ保存する

import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

# 24bpp DIB
symbol.save_bitmap("qrcode.bmp")
# 1bpp DIB
symbol.save_bitmap("qrcode.bmp", monochrome=True)
# 10 pixels per module
symbol.save_bitmap("qrcode.bmp", module_size=10)
# Specify foreground and background colors
symbol.save_bitmap("qrcode.bmp", fore_rgb="#0000FF", back_rgb="#FFFFFF")

# PPM
symbol.save_ppm("qrcode.ppm")
# XBM
symbol.save_xbm("qrcode.xbm")
# SVG
symbol.save_svg("qrcode.svg")

例7.RGB RAW画像を取得する

import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

(data, width, height) = symbol.get_rgb_bytes()

例8.SVG画像を取得する

import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

svg = symbol.get_svg()

例9.tkinter.BitmapImage, tkinter.PhotoImageオブジェクトを取得する

import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

# BitmapImage
image = symbol.tk_bitmap_image()
# PhotoImage
image = symbol.tk_photo_image()

例10.wxPython.Bitmapオブジェクトを取得する

import wx
import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

(data, width, height) = symbol.get_rgb_bytes() 
bitmap = wx.Bitmap.FromBuffer(width, height, data)

例11.Pillow (PIL) を使用して、様々な画像形式で保存する

import PIL.Image
import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

(data, width, height) = symbol.get_rgb_bytes()
image = PIL.Image.frombytes("RGB", (width, height), data)

# PNG
image.save("qrcode.png", "PNG")
# GIF
image.save("qrcode.gif", "GIF")
# JPEG
image.save("qrcode.jpg", "JPEG")

例12.base64エンコードされたビットマップデータを取得する

import qrcodelib as qr

symbols = qr.Symbols()
symbols.append_text("012345abcdefg")
symbol = symbols.item(0)

base64 = symbol.get_bitmap_base64()

About

QR Code generator library in Python

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages