from PIL import Image #导入PIL
IMG='d.jpg'
width=60
heigth=45
ascii_char=list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
def get_char(r,g,b,alpha=256):
if alpha==0 :
return ' '
length=len(ascii_char)#计算准备替换的字符长度
gray=int(0.2126*r+0.7152*g+0.0722*b)#把图片转换成灰度值
unit=(256.0+1)/length#灰度值与字符长度的比值 确定字符
#ascii_char 把ascii转换成字符
return ascii_char[int(gray/unit)]
if __name__=='__main__':
im=Image.open(IMG)#打开图片
#从新定义图片大小 质量
im=im.resize((width,heigth),Image.NEAREST)
txt=""#空字符 写入前准备
for i in range(heigth):
for j in range(width):
#*im.getpixel返回3个参数[元组] *号对元组拆分 对应RGB值
txt+=get_char(*im.getpixel((j,i)))#循坏获取像素\写入ascii字符的值
txt+='\n'
print(txt)#打印出结果
#保存文件
with open("output.txt",'w')as f:
f.write(txt)