You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RPi_WS2812b_LED/supporting_files/piltest.py

53 lines
1.6 KiB

#Created by Justin Healy
#Based on logic from jsheperd from https://stackoverflow.com/a/27753869/190597
from __future__ import print_function
import string
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
def char_to_pixels(text, path, fontsize):
font = ImageFont.truetype(path, fontsize)
w, h = font.getsize(text)
image = Image.new('L', (w, h), 1)
draw = ImageDraw.Draw(image)
draw.text((0, 0), text, font=font)
arr = np.asarray(image)
arr = np.where(arr, 0, 1)
arr = arr[(arr != 0).any(axis=1)]
return arr
def display(arr):
result = np.where(arr, '1', '0')
print("This gives an Array of Arrays, where reach contained Array is a row")
print(result)
print()
print('\n'.join([''.join(row) for row in result]))
#I have used static coding successfully, now to set this as more reusable declarations rather than hard coding.
#Single Source to change for everything
#Read from file?
fileName = "pilReadTest"
pullFile = open(fileName,"r")
someString = pullFile.read()
#Font Path?
fontPath = "fonts/FreeMonoBold.ttf"
#font Size?
fontSize = 12
#print("This was what was found in the File: "+str(someString))
#print()
#print("Now putting each letter of the found string through the PIL Image Module")
#print()
for c in someString:
arr = char_to_pixels(c,fontPath,fontSize)
print()
#This is the grid size results (w,h)
print(arr.shape)
print()
#print("This is the converted values of the AofAs, for each ROW in Result, the end product")
display(arr)
print()