今回はバーコードやQRコードを生成する
プログラムを作ってみました。

解説動画はこちら



さて
QRコードはPythonで簡単に作る事ができます。

Google Colab上で動くようにしたので
早速ライブラリをインストールしてみましょう。
!pip install pyqrcode
!pip install pypng
!pip install python_barcode
!pip install pyzbar
!apt install libzbar0
これで準備完了です。


まずはQRコードを作ってみましょう。

pyqrcodeを用います。
ライブラリを読み込んで
表示させるためのテキストを打ち込みます。

import pyqrcode

content = '私はおっぱいが大好きです'
c = pyqrcode.create(content=content,error='H') 
c.png(file='oppai_daisuki.png',scale=6)

from IPython.display import Image as disp
disp('oppai_daisuki.png')
download-2
暇な方はQRを読み込みしてみてください。
カメラアプリなどから読み込めると思います。


続いてQRコードの読み取りです。
読み取りはpyzbarを用います。
from pyzbar.pyzbar import decode
from PIL import Image

d = decode(Image.open('oppai_daisuki.png'))
print(d[0].data.decode("utf-8"))
私はおっぱいが大好きです


続いてバーコードの作成です。

バーコードは結構な種類があります。
今回は「ean13」というものです。

コードの体系は
国コード(2桁)
メーカコード(5桁)
商品コード(5桁)
チェックディジット(1桁)
となっており12桁入力すると
自動で最後の一桁、チェックディジットが
計算される仕組みです。

12桁の数字を打ち込みしましょう。

import barcode
from barcode.writer import ImageWriter

maker = barcode.get_barcode_class('ean13') 
num = '123456789902' #12桁入力
code = maker(num,writer=ImageWriter()) 
code.save('number')

from IPython.display import Image as disp
disp('number.png')
download-1



バーコードの読み取りは
こちらです。


from pyzbar.pyzbar import decode
from PIL import Image

d = decode(Image.open('number.png'))
print(d[0].data.decode("utf-8"))
1234567899022



最後に画像にQRコードを埋め込んでみましょう。

最初に背景画像を用意しておいて
Colabにアップロードしておいてください。

どこに配置するかを指定するので
指定場所をposに数値で入力してください。

import pyqrcode
from PIL import Image

# 背景画像
img1 = Image.open('kurochan.png')

# QRコード
content = 'http://www.otupy.net/'
c = pyqrcode.create(content=content,error='H') 
c.png(file='tmp.png',scale=3)
img2 = Image.open('tmp.png')

# 配置場所
pos = (img1.size[0] - img2.size[0], img1.size[1] - img2.size[1])
#pos = (img1.size[0] //3 , img1.size[1] //7)
img1.paste(img2, pos)
img1.save('otupy.png')

# 表示
from IPython.display import Image as disp
disp('otupy.png')
download

こんな感じでQR埋め込みの画像が作成できます。
めちゃくちゃ簡単ですね!!!

こんなに簡単にバーコードなどを
作成できるとは思いませんでした。

結構遊べますね。
URL配るとか、名刺に挟むとか
いろいろ使えると思います。

今回はこれまでです
それでは。