图像的字符画绘制
第二次写博客,记录每天的学习点滴。
知识点总结
- Python的第三方图像处理库 PIL
- 灰度值公式
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
灰度值小的地方用列表开头的符号映射,灰度值大的地方用列表末尾的符号映射。 - getpixel((j,i))得到某个像素点的颜色,一般返回(r, g, b)
from PIL import Image
ascii_char = list ('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')
def get_char(r, b, g, alpha = 256):
if alpha == 0:
return ' '
#计算每个像素点应该放入列表中哪个字符
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = 256 / len(ascii_char)
return ascii_char[int(gray / unit)]
def main():
im = Image.open('boy.jpg')
WIDTH , HEIGHT = 90,34
im = im.resize((WIDTH,HEIGHT))
#初试化文本
txt = ""
for i in range (HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j,i)))
txt += '\n' #遍历每行结束后切换到下一行
#创建文本文件,将转换的字符串图画保存进去
fo = open("pic_char.txt","w")
fo.write(txt)
fo.close()
if __name__ == '__main__':
main()