Python之旅——图像的字符画绘制

图像的字符画绘制

第二次写博客,记录每天的学习点滴。

知识点总结

  1. Python的第三方图像处理库 PIL
  2. 灰度值公式 gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
    灰度值小的地方用列表开头的符号映射,灰度值大的地方用列表末尾的符号映射。
  3. 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()
发布了6 篇原创文章 · 获赞 1 · 访问量 161

猜你喜欢

转载自blog.csdn.net/weixin_45761659/article/details/102612678