Python 图片转成字符图

2019-04-14 16:52发布

来源:实验楼
来源地址:实验楼-Python 图片转字符画 思路:将图片R,G,B转换成灰度图,再映射到定义好的字符串上。 背景知识:
①PIL Image from PIL import Image image = Image.open('pic1.png') #返还 Image 对象 width,height = image.size #返还图片的宽和高 image.getpixel((i,j)) #返还Image的R,G,B,Alpha值 ②打开文本与保存 with open('output.txt','w') as f : f.write(txt) #以只写模式打开
代码: from PIL import Image #字符集($@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'. ) ##定义将0-256个灰度映射到字符集上 def get_char(r,g,b,alpha = 256): charlist = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'. ") if alpha == 0: return ' ' gray = int(0.2126*r + 0.7152*g + 0.0722*b) uint = (256 + 1)/len(charlist) return charlist[int(gray/uint)] image = Image.open('pic1.png') w,h = image.size txt = "" for x in range(w): for y in range(h): txt += get_char(*image.getpixel((y,x))) txt += ' ' print(txt) ##记录成txt文本 with open('output.txt','w') as f: f.write(txt) 函数get_char需要四个参数,image.getpixel((y,x))返还一个元组,在前面加 * 号可以将元组中的参数依次传入。 原图:
原图