QRコード(1)からの続き
前回の結果をまとめて,次のような仕様のpythonプログラム qr.py をつくる。テキストをファイルで与えるとエンコードしたQRコードの画像ファイルを生成し,逆にQRコードの画像ファイルを与えるとデコードしたテキストファイルを生成するソフトウェアである。いろいろ調べた結果を継ぎ接ぎしているだけだ。
(1) ./qr.py t hoge とすると,hoge.txt を hoge.png に変換する。(2) ./qr.py g hoge とすると,hoge.png を hoge.txt に変換する。
#!/Users/koshi/bin/pythonimport sysimport qrcodefrom pyzbar.pyzbar import decodefrom PIL import Image, ImageGrabfoo=sys.argv[1]bar=sys.argv[2]if foo == 't':infile = bar+'.txt'outfile = bar+'.png'with open(infile, "r") as file:moji = file.read()img = qrcode.make(moji)img.save(outfile)elif foo == 'g':infile = bar+'.png'outfile = bar+'.txt'with open(outfile, 'w') as file:img = Image.open(infile)for x in decode(img):moji = x[0].decode("utf-8")file.write(moji)
QRコードの仕様によれば,変換できる漢字かな文字数は最大1871文字までだ。726文字のサンプルで確認できた。
図:726文字のテキストに対するQRコード
726文字のこのQRコードは約7.5cm×7.5cmの面積なので,1㎠あたり13文字の情報密度になる。日本経済新聞で同じ面積の正方形に含まれる活字数を数える368文字であり,1㎠あたり6.5文字と約半分の情報密度だ。人間の目と手がQRコードに適応するよう進化していたら2倍の効率で情報伝達が可能になる・・・わけではない。
0 件のコメント:
コメントを投稿