mrubyでQRCodeを表示するためのmrbgemを作ってみました。
後日追記:すでに作られていた方がいらっしゃいました。そちらは画像を返すmrbgemのようですが、こちらは画像処理が入っていないmrbgemになります。
使い方は簡単で文字列をmruby-packを使って配列にして、クラスメソッドのencodeに渡します。
txt = "MORI MORI QRCode"
qr = QRCode.encode(0, 1, txt.unpack("C*"))
でqrコードのビットパターンの配列が返ってきます。
第一引数がLevelで0から4で第二引数がVersionで第三引数がエンコードするデータの配列です。
漢字の場合はmruby-nkfでSJISにします。
sjis = NKF.nkf('-s', txt).unpack("C*")
mruby-cairoで液晶に表示してみました。
wnnsjis = NKF.nkf('-s', wata + naka).unpack("C*")
qr = QRCode.encode(0, 2, wnnsjis)
bs = 2
offx = (128 - (25 * bs)) / 2
offy = 80
c.set_source_rgb(0, 0, 0)
for n in 0..24 do
for m in 0..24 do
if qr[n * 25 + m] == 1 then
c.rectangle(m*bs+offx, n*bs+offy, bs, bs)
c.fill()
end
end
end
lcd.write_cmd([0x2C])
lcd.copyspi(c)
SJISでゴメンね>K林さん
c++のコードを使っているので実行にはc++のライブラリが必要になります。
コアの部分はサイテックさんが公開されているコードを利用させてもらいました。ありがとうございます。
mruby-qrcodeはFreeBSDで作りましたが、特にOS依存はないはずなので、他のプラットフォームでも使えると思います。