python3图片转化成字符画

 1 from PIL import Image  # 安装 见https://www.cnblogs.com/yuzhen0228/p/13330536.html
 2 
 3 ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'. ")  # 字符从深到浅
 4 length = len(ascii_char)
 5 img = Image.open('demo.png')
 6 (width, heigth) = img.size
 7 img = img.resize((int(width * 0.1), int(heigth * 0.05)))  # 缩小,便于字符画的展示
 8 print(img.size)  # 打印字符画的宽和高
 9 
10 
11 def covert(img):
12     # img = img.convert("L")  # 彩图直接灰度化
13     txt = ""
14     imode = list(img.getbands())
15     print(imode[-1])
16     for i in range(img.size[1]):  # 高,也就是行
17         for j in range(img.size[0]):  # 宽,也就是列
18             if imode[-1] == 'A':
19                 r,g,b,a = img.getpixel((j, i))
20             else: # imode[-1] == 'B'
21                 r,g,b = img.getpixel((j, i))
22             gray = int(r*0.299+g*0.587+b*0.114)  # 得到该点的灰度   详情 https://blog.csdn.net/xdrt81y/article/details/8289963
23             txt += ascii_char[int(gray * (length-1)/256)]  # 不同灰度分散到字符列表中的每个字符
24         txt += '
'  # 表示做完一行了
25     return txt
26 
27 
28 txt = covert(img)
29 f = open('demo.txt', 'w')
30 f.write(txt)
31 f.close()

原文地址:https://www.cnblogs.com/yuzhen0228/p/13330589.html