読者です 読者をやめる 読者になる 読者になる

あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Nokia5110LCDのPythonライブラリにあわせて画像データを作る

一つ前のエントリーの続き。01で作った(☝ ՞ਊ ՞)☝の画像は最終的にNokia5110LCD用のPythonライブラリで表示できるデータにします。

0x00〜0xFFで表現するらしいので、01のデータを8ケタずつに切って16進数に変換すれば良さそう……と思っていたのですが、あとから確認したら、1つのデータで表現されるのは横1px×縦8pxの8ドットらしく、画像の読み方を工夫する必要がありそうでした。

読み方を工夫してもいいのですが、ようはデータが取れればなんでもいいので、画像を時計回りに90度まわして8pxごとに切って縦にくっつけます。あーこれはひどい。何の工夫もないぞー。

f:id:Akkiesoft:20140225184409g:plain

コードは以下の通り変更。01を読み取って、8ケタ貯まったら16進数変換してプリントします。くどいですがデータが取れればなんでもいいので何の工夫もしません。そういえば前回のコードはwidth,height = im.sizeが抜けてました。

from PIL import Image

im = Image.open("uiiin-dot84x19.gif")
width,height = im.size

zeroone = ""
out = ""
x = 0
y = 0
while y < height:
  while x < width:
    a = 1 - im.getpixel((x,y))
    zeroone += str(a)
    if len(zeroone) == 8:
      i = int(zeroone, 2)
      print hex(i)
      zeroone = ""
    x += 1
  x = 0
  y += 1
print out
print zeroone

print "OK."

0x0 0xca...とか言うのが1つごとに会議用された長ったらしい何かが出てくるので、これをテキストエディタに貼り付けて加工して、Pythonスクリプトに食わせます。

そうして出来上がったのがこちら。

今週末のOSCで、Ejectヘルメットに貼り付けて使用したかったので、デモスクリプトに組み込んで完成です。動画では自分用に実装したIPアドレス確認機構のデモもしています。

最後に、デモで使用するPythonスクリプトをぺたり。(☝ ՞ਊ ՞)☝の画像データも入ってます。

ちょっと未実装の部分もありますが、OSCまでには何とかしますー。