這個程序的核心思想就是將圖片的每種顏色與一個字符形成映射關系,然后用字符來表示該種顏色。
我們可以首先可以獲取每個像素點的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)