这个程序的核心思想就是将图片的每种颜色与一个字符形成映射关系,然后用字符来表示该种颜色。
我们可以首先可以获取每个像素点的r,g,b值,然后通过公式:
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
就可以得到每个像素点的灰度值。
准备好一串字符串,将不同的灰度值与不同的字符进行映射即可。
1 from PIL import Image 2 3 change_char = list("@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,") 4 length = len(change_char) 5 f = open('result.txt', 'w') 6 7 def get_gray(im): 8 txt = '' 9 im = im.resize((int(im.size[0]*0.5), int(im.size[1]*0.4))) 10 width, height = im.size 11 for h in range(height): 12 for w in range(width): 13 r,g,b = im.getpixel((w,h)) 14 gray = int(0.2126*r + 0.7152*g + 0.0722*b) 15 unit = (256 + 1)/length 16 txt = txt + change_char[int(gray/unit)] 17 txt = txt + ' ' 18 f.write(txt) 19 20 21 if __name__ == '__main__': 22 im = Image.open('pic.jpg') 23 get_gray(im)