#keywords(Python,Data Matrix,libdmtx)
[[どぶお/Pythonで遊ぼう!]]
* Data Matrixを生成する [#e2b3534b]
最近すっかりフツーなシステム開発をしているので、たまたま2次元バーコードの一つであるData Matrixをいじる機会がありました。~
最近すっかりフツーなシステム開発をすることも多いので、たまたま2次元バーコードの一つであるData Matrixをいじる機会がありました。~
QRコードの生成は解説ページがすぐ見つかるのですが、PythonでData Matrixを生成するlibdmtx wrapperの解説が(大元のドキュメントにも)見当たらなかったのでメモ。
- libdmtx Python Wrapper -- http://libdmtx.wikidot.com/libdmtx-python-wrapper
** libdmtx Python Wrapperのインストール [#ndcf26cd]
CentOS 6.5ではyumでインストールできます。ただしPIL(Python Imaging Library)が自動でインストールされないのでPILのインストールも必要です。
# yum install python-libdmtx
# yum install python-imaging
これで使うことができます。
** Data Matrixを生成する [#m56edf53]
生成だけならすぐです。細かいオプションは不明…
#!/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()で値を取り出すことができます。
#ref(dmtx_test.png)
こんな感じ。
** イメージとして扱う [#aaf9d83a]
Data Matrixのイメージを取り出したい場合は、
dm.image
でPIL(Python Imaging Library)のImageオブジェクトが取り出せるので、加工や貼り付けを簡単に行うことができます。~
私はずらっと出力したかったので、横に並べてテプラで印刷して使ってます。
** コンストラクタのオプション [#rbbbfb93]
DataMatrixオブジェクトを生成するときにサイズや形状の調整ができます。例えばこんな感じ。
dm = DataMatrix(shape=DataMatrix.DmtxSymbolRectAuto, module_size=2)
*** 指定できるオプション [#zfabc051]
|オプション |値の例|内容|h
| |CENTER:||c
|module_size|4|1ドットの大きさ。これでサイズが決まります|
|margin_size|8|マージンの大きさ|
|gap_size | |?|
|scheme | |エンコード方法?|
|shape |下記参照|マトリックスの形|
shapeを設定することでサイズや形(正方形 or 長方形)を指定できます。
*** shapeの値 [#l8c73ef3]
|値 |内容|h
|DataMatrix.DmtxSymbolShapeAuto |自動判別?|
|DataMatrix.DmtxSymbolSquareAuto|正方形(サイズ自動)|
|DataMatrix.DmtxSymbolRectAuto |長方形(サイズ自動)|
|DataMatrix.DmtxSymbol10x10 |サイズ指定|
サイズ指定は10x10から144x144までいろいろあります。詳しくはpydmtx.pyを参照のこと。