利用PIL模板库对图像进行处理
首先利用函数打开图像文件
图像文件的mode是 P
要改为 RGBA 才能回去(R,G,B,A)元组tuple
否则是一个 int 整数
gray 是灰度值计算,计算出哪些地方应该显示什么样的字符
代码如下:
#coding: utf-8
from PIL import Image
char_arr = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
im = Image.open("wm.png")
# im.mode = "p" getpixel's return value is int
im = im.convert("RGBA")
# im.mode = "RGBA" getpixel's return value is (r, g, b, alpha)
txt = ""
def get_char(r, g, b, alpha):
if alpha == 0:
return " "
# gray value
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
unit = (256.0 + 1) / len(char_arr)
return char_arr[int(gray / unit)]
for i in range(im.height):
for j in range(im.width):
txt += get_char(*im.getpixel((j,i)))
txt += "\n"
print(txt)