#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()