Same old rule. Renderings first



The theory is very simple, is the image operation, here needs to use PIL Python package, which has very good image processing function.

First open the image and resize it.

img = Image.open(picPath)
img = img.resize((picW, picH))
Copy the code

Then read the gray value, and then the gray value and character correspond to the line.

from PIL import Image

lstChars = list("$@B%8&WM#*oahkbdpqwmZO0QLaCJUYXzczjhdhsdavunxrjft/\|()1{}[]? -_+~<>i! lI; :, \ "^ ` '.") 

def oneChars(r, g, b, alpha = 256) :
    global lstChars
    length = len(lstChars)
    gray = int(0.2126 * r + 0.7152 * g + 0.722 * b)
    index =length*gray
    return lstChars[index]

picPath = "C:\Users\Administrator\Desktop\\aaaaa\\aa.png"
picH = 40
picW =  80

img = Image.open(picPath)
img = img.resize((picW, picH))

txt = ""
for y in range(picH):
    for x in range(picW):
        txt += oneChars(img.getpixel((x, y)))
    txt += '\n'

print txt
Copy the code

If you have any ideas, please leave a message.