どぶお/Pythonで遊ぼう!

Data Matrixを生成する  

最近すっかりフツーなシステム開発をすることも多いので、たまたま2次元バーコードの一つであるData Matrixをいじる機会がありました。
QRコードの生成は解説ページがすぐ見つかるのですが、PythonでData Matrixを生成するlibdmtx wrapperの解説が(大元のドキュメントにも)見当たらなかったのでメモ。

libdmtx Python Wrapperのインストール  

CentOS 6.5ではyumでインストールできます。ただしPIL(Python Imaging Library)が自動でインストールされないのでPILのインストールも必要です。

# yum install python-libdmtx
# yum install python-imaging

これで使うことができます。

Data Matrixを生成する  

生成だけならすぐです。細かいオプションは不明…

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pydmtx import DataMatrix
dm = DataMatrix()
dm.encode(u"これはテストデータです".encode("shift_jis"))
dm.save("test.png", "png")

日本語はShiftJISにしてからエンコード(Data Matrix生成)をします。 で、それをPNGで保存すればOKです。
なお、文字列としてバッファに入れたい場合(オンザフライで出力するなど)はStringIOを使います。例えば、

from StringIO import StringIO
buf = StringIO()
dm.save(buf, "png")

とすればbufに格納されます。buf.getvalue()で値を取り出すことができます。

dmtx_test.png

こんな感じ。

イメージとして扱う  

Data Matrixのイメージを取り出したい場合は、

dm.image

でPIL(Python Imaging Library)のImageオブジェクトが取り出せるので、加工や貼り付けを簡単に行うことができます。
私はずらっと出力したかったので、横に並べてテプラで印刷して使ってます。

コンストラクタのオプション  

DataMatrixオブジェクトを生成するときにサイズや形状の調整ができます。例えばこんな感じ。

dm = DataMatrix(shape=DataMatrix.DmtxSymbolRectAuto, module_size=2)

指定できるオプション  

オプション値の例内容
module_size41ドットの大きさ。これでサイズが決まります
margin_size8マージンの大きさ
gap_size?
schemeエンコード方法?
shape下記参照マトリックスの形

shapeを設定することでサイズや形(正方形 or 長方形)を指定できます。

shapeの値  

内容
DataMatrix.DmtxSymbolShapeAuto自動判別?
DataMatrix.DmtxSymbolSquareAuto正方形(サイズ自動)
DataMatrix.DmtxSymbolRectAuto長方形(サイズ自動)
DataMatrix.DmtxSymbol10x10サイズ指定

サイズ指定は10x10から144x144までいろいろあります。詳しくはpydmtx.pyを参照のこと。

添付ファイル: filedmtx_test.png 1547件 [詳細]