66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from PIL import Image, ImageDraw, ImageFont
|
|
import numpy as np
|
|
import datetime
|
|
"""Two colors: 1 main color and 1 accent color. These are labeled in the matrix as 1 and 2"""
|
|
|
|
def text_converter(text, height):
|
|
"""Converts a text to a pixel-matrix
|
|
returns: np.array((16, x))"""
|
|
|
|
font = ImageFont.truetype("verdanab.ttf", 16)
|
|
size = font.getsize(text)
|
|
img = Image.new("1",size,"black")
|
|
draw = ImageDraw.Draw(img)
|
|
draw.text((0, 0), text, "white", font=font)
|
|
pixels = np.array(img, dtype=np.uint8)
|
|
return pixels
|
|
|
|
|
|
digits = {
|
|
1 : [[0,1,1],[0,0,1],[0,0,1],[0,0,1],[0,0,1]],
|
|
2 : [[1,1,1],[0,0,1],[1,1,1],[1,0,0],[1,1,1]],
|
|
3 : [[1,1,1],[0,0,1],[1,1,1],[0,0,1],[1,1,1]],
|
|
4 : [[1,0,1],[1,0,1],[1,1,1],[0,0,1],[0,0,1]],
|
|
5 : [[1,1,1],[1,0,0],[1,1,1],[0,0,1],[1,1,1]],
|
|
6 : [[1,1,1],[1,0,0],[1,1,1],[1,0,1],[1,1,1]],
|
|
7 : [[1,1,1],[0,0,1],[0,0,1],[0,0,1],[0,0,1]],
|
|
8 : [[1,1,1],[1,0,1],[1,1,1],[1,0,1],[1,1,1]],
|
|
9 : [[1,1,1],[1,0,1],[1,1,1],[0,0,1],[1,1,1]],
|
|
0 : [[1,1,1],[1,0,1],[1,0,1],[1,0,1],[1,1,1]]
|
|
}
|
|
|
|
##place of numbers, invariable
|
|
digit_position = [[3,1], [3,9], [9,1], [9,9]]
|
|
|
|
def time_converter():
|
|
"""Converts 4-digit time to a pixel-matrix
|
|
returns: np.array((16, 16))"""
|
|
time = datetime.datetime.now().strftime("%H%M")
|
|
pixels = np.zeros((16,16),dtype=np.uint8)
|
|
time = "0" * (4 - len(str(time))) + str(time)
|
|
time_split = [int(i) for i in time]
|
|
|
|
for i in range(4):
|
|
x = digit_position[i][0]
|
|
y = digit_position[i][1]
|
|
number = digits[time_split[i]]
|
|
pixels[x: x + 5, y: y + 3] = np.array(number)
|
|
|
|
|
|
return pixels
|
|
|
|
|
|
days = np.append(np.zeros((15,16)), np.array([0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,1])).reshape((16,16))
|
|
|
|
def date_converter():
|
|
today = datetime.datetime.today()
|
|
weekday = datetime.datetime.weekday(today)
|
|
# size of the reduced array according to weekday
|
|
size = [2,4,6,8,10,13,16]
|
|
|
|
pixels = days #base color background
|
|
lrow = np.append(pixels[15,:size[weekday]], [0 for i in range(16 - size[weekday])])
|
|
lrow = np.append(np.zeros((15,16)), lrow).reshape((16,16))
|
|
pixels += lrow
|
|
return pixels
|