不到20行代码,获得初音的字符画

本代码的详解及演示视频:
[玩py]两分钟获得初音小姐姐的字符画
from PIL import Image
chars = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
#不同灰度对应不同的字符,此list为灰度与字符的映射
length = len(chars)
imgFile = open(u'./111.png','rb') #打开图片文件
img = Image.open(imgFile) #获得图片
img = img.resize((200,200)) #调整图片大小
imgFile.close() #将刚刚打开的文件关掉,因为已经拿到图片了嘛
img = img.convert("L") #将图片转换为黑白图片
outChars = ''
#一行一行地,一个像素点一个像素点地获取灰度对应的字符
for y in range(0,img.size[1]): #size属性表示图片的分辨率,'0'为横向大小,'1'为纵向
for x in range(0,img.size[0]):
gray = img.getpixel((x,y))
#返回指定位置的像素
outChars = outChars + chars[int(((length-1)*gray)/256)]
#建立灰度与字符集的映射
outChars = outChars+'\r\n' #一行结束,换行
#打开(创建)一个文件,将字符画写入其中
outFile = open('out.txt','w')
outFile.write(outChars)
outFile.close()