aboutsummaryrefslogtreecommitdiff
path: root/j1demo/firmware/encode.py
blob: 54022d2c33202935057f0af09fd5074c14acbb29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys
import Image
from array import array

def getch(im, x, y):
    return tuple(tuple((int(0 != im.getpixel((x + j, y + i)))) for j in range(8)) for i in range(8))
    
def main(filename):
    sm = Image.open(filename).convert("L")
    im = Image.new("L", (512, 256))
    im.paste(sm, (0,0))
    charset = {}
    picture = []
    for y in range(0, im.size[1], 8):
        for x in range(0, im.size[0], 8):
            glyph = getch(im, x, y)
            if not glyph in charset:
                charset[glyph] = 96 + len(charset)
            picture.append(charset[glyph])
    open(filename + ".pic", "w").write(array('B', picture).tostring())
    cd = array('B', [0] * 8 * len(charset))
    for d,i in charset.items():
        i -= 96
        for y in range(8):
            cd[8 * i + y] = sum([(d[y][x] << (7 - x)) for x in range(8)])
    open(filename + ".chr", "w").write(cd.tostring())

main(sys.argv[1])