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.
53 lines
1.6 KiB
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()
|