287.ラズパイ無双[23 QRコード作成]
初回:2022/11/30
Raspberry Pi (ラズベリーパイ、通称"ラズパイ")で何か作ってみようという新シリーズです。前回、『QRコード』の読取プログラムをご紹介しましたが、今回は『QRコード』の作成プログラムをご紹介したいと思います。
P子「読取と作成があれば、自分たちで色々と作れるわね」※1
1.QRコード作成
≪参考1≫
https://takabus.com/tips/1360/
【Python】QRコードを生成するには?一括で生成するサンプルコードもご紹介
PythonでQRコードを生成するには、qrcodeというライブラリがおすすめです。
P子「参考ページの丸コピーね」
まずは、インストールします。
$ pip3 install qrcode
これで、準備 OK です。
では、実際に、QRコードを作成して画像保存するコードを見てみましょう。
import qrcode img = qrcode.make('QRコードです!') img.save("qr.png")
P子「コード自体も丸コピーね」
簡単ですね。
前回の記事の中で『2.QRコードのバージョン』をご説明しましたが、この、qrcode もそれらの設定が可能です。
import qrcode qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=3, border=4, ) qr.add_data("QRコードです!") qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white")
≪参考2≫
https://note.nkmk.me/python-pillow-qrcode/
Python, Pillow, qrcodeでQRコード画像を生成、保存
■生成されるQRコードのバージョン(引数version)
version=1が最小でversion=40が最大
■誤り訂正レベル(引数error_correction)
qrcode.constants.ERROR_CORRECT_L(約7%)
qrcode.constants.ERROR_CORRECT_M(約15%, デフォルト)
qrcode.constants.ERROR_CORRECT_Q(約25%)
qrcode.constants.ERROR_CORRECT_H(約30%)
■セルのサイズ(引数box_size)
セル(四角い黒白の点)のサイズ(ピクセル)を設定できる
デフォルトは10
■余白の幅(引数border)
外周の余白の幅(セルの数)を設定できる
デフォルトは4で、仕様上の最小幅
■色(引数fill_color, back_color)
black, white, redなどの名前や#xxxxxxのスタイルで指定
2.プリンタ(QL-800)印刷
画像ファイルで作成した、QRコードですが、現場でシールに印刷したくなりますよね。そんな場合に小型の感熱ラベルプリンタがあれば、非常に便利です。
≪参考3≫
https://www.amazon.co.jp/dp/B073LZD7LZ
ブラザー工業 感熱ラベルプリンター QL-800
このプリンタは、感熱温度を調整する事で、黒と赤の2色を同時に印刷できます。
P子「QRコードの印刷だけなら、白黒で十分だけどね」
今回必要なのは、brother_ql というパッケージですが、画像の読み取りに、Pillow を使います。
≪参考4≫
https://pypi.org/project/brother-ql/
brother-ql 0.9.4
$ sudo pip3 install Pillow
$ sudo pip3 install --upgrade brother_ql
sudu が必要だったかどうか忘れてしまいました。
このプログラムをインストール後に、コマンドで印刷実行もできます。
$ sudo brother_ql --printer /dev/usb/lp0 --model QL-800 print -l 62 --red qr.png
python で使用する場合
from PIL import Image from brother_ql.conversion import convert from brother_ql.backends.helpers import send from brother_ql.raster import BrotherQLRaster def main(): image = Image.open('qr.png') backend = 'linux_kernel' # 'pyusb', 'linux_kernel', 'network' model = 'QL-800' # your printer model. printer = '/dev/usb/lp0' qlr = BrotherQLRaster(model) qlr.exception_on_warning = True # https://brother-ql.net/_modules/brother_ql/conversion.html badge = convert( qlr=qlr, images=[image], # Takes a list of file names or PIL objects. label='62red', # rotate='90', # 'Auto', '0', '90', '270' threshold=70.0, # Black and white threshold in percent. dither=False, compress=False, red=True, # Only True if using Red/Black 62 mm label tape. dpi_600=False, lq=False, # True for low quality. no_cut=False ) send(instructions=badge, printer_identifier=printer, backend_identifier=backend, blocking=True) if __name__ == '__main__': main()
3.プリンタ動作確認
Linux系でのプリンタの使用は、Windows での使用より難しいと思います。まあ、慣れていないというのもありますが、動かないだけでパニックになってしまいます。そんな時に慌てずに一つづつ原因の可能性をつぶしていきましょう。
≪参考5≫
https://www.linuxmania.jp/printer_troubleshoot.html
Linuxでプリンタが動作しない場合の確認方法(CUPS) (Ubuntu,Scientific Linux(CentOS),Fedora)
動作確認では、以下のポイントについてチェックします。
1.プリンタとPCの間のケーブル配線を確認
2.プリンタがUSBデバイスとして認識されているか
3.CUPS(プリントサービス)は起動されているか
4.プリンタがCUPSに認識されているか
5.プリンタの状態がジョブ受付中になっているか
6.CUPSでプリンタにテスト印刷を指示。印刷できるか?
7.指示したテスト印刷は、キューに入っているか?
8.CUPSのログをチェック、エラーが出ていないか確認
P子「ポイントも丸コピーね」
詳細は、参考URLでご確認ください。
実際、私が遭遇したエラーは、プリンタの Editor lite のランプを、OFF にする事でした。
4.まとめ
QRコードの作成は、非常に簡単にできました。
プリンタの印刷も、きれいに出来ました。まだ、プリンタの方は十分に使いこなしていませんが、現場で現品票とか印刷できれば、色々と活用が出来そうです。
QRコードは、色々な使い道があるので、ラズパイでお手軽に扱えるというのは非常にありがたい事です。
ほな、さいなら
======= <<注釈>>=======
※1 P子「読取と作成があれば、自分たちで色々と作れるわね」
P子とは、私があこがれているツンデレPythonの仮想女性の心の声です。