这个程序的核心思想就是将图片的每种颜色与一个字符形成映射关系,然后用字符来表示该种颜色。

我们可以首先可以获取每个像素点的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 + \'\n\'
18     f.write(txt)
19 
20 
21 if __name__ == \'__main__\':
22     im = Image.open(\'pic.jpg\')
23     get_gray(im)

 

版权声明:本文为zyb993963526原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zyb993963526/p/8404666.html