先po上可以在windows+python3.7上运行的代码
from PIL import Image
ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxr\jft/\|()1{}[]?-/+@<>i!;:,|`.')
def get_char(r, b, g, alpha=256):
if alpha == 0:
return ''
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0+1) / len(ascii_char)
return ascii_char[int(gray//unit)]
def main():
im = Image.open('F:/桌面文件/ji.jpg')
wid, hei = 100, 60
im = im.resize((wid, hei))
txt = ""
for i in range(hei):
for j in range(wid):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'
fo = open("pic_char.txt", "w")
fo.write(txt)
fo.close()
main()
说一下遇到的问题:
①抄代码时候漏了
return ascii_char[int(gray//unit)]
导致报错
TypeError: can only concatenate str (not “NoneType“) to str
意思就是只能把字符串相连,漏了这个return,该函数没有返回值,所以不能连接在一起。
强制连接一起可以在txt += get_char(*im.getpixel((j, i)))这段代码中,把get_char放在str()中。
你就可以得到 一堆none(嘿嘿
②在def函数之前要有两行空格,不然会报错。