summaryrefslogtreecommitdiff
path: root/tools/rle_encode.py
blob: 3117ee16243a629dc689b9cc96af9dbd6abbe263 (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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from PIL import Image

im = Image.open('pine64.png')
pixels = im.load()

rle = []
rl = 0
px = 0
    
for y in range(im.height):
    for x in range(im.width):
        newpx = pixels[x, y]
        if newpx == px:
            rl += 1
            continue
        assert(rl < 255)
        rle.append(rl)
        rl = 1
        px = newpx
rle.append(rl)

sx = 240
sy = 240
image = bytes(rle)


data = bytearray(2*sx)
dp = 0
black = ord('#')
white = ord(' ')
color = black

for rl in image:
    while rl:
        data[dp] = color
        data[dp+1] = color
        dp += 2
        rl -= 1

        if dp >= (2*sx):
            print(data.decode('utf-8'))
            dp = 0

    if color == black:
        color = white
    else:
        color = black

assert(dp == 0)

print(image)