python图片转字符画(windows)

1.环境准备

  a. 找到python安装路径:python\python36\Scripts\easy_install.exe,在环境变量PATH里添加路径:python\python36\Scripts,保存之后,点击安装easy_install.exe

  b. 打开命令行窗口,输入easy --version查看版本信息,安装成功

  c.安装pillow:在cmd窗口执行 pip install pillow

     以上是环境准备

2.代码段:

 1 from PIL import Image
 2 import argparse
 3 
 4 #命令行输入参数处理
 5 parser = argparse.ArgumentParser()
 6 
 7 parser.add_argument('file')     #输入文件
 8 parser.add_argument('-o', '--output')   #输出文件
 9 parser.add_argument('--width', type = int, default = 40) #输出字符画宽
10 parser.add_argument('--height', type = int, default = 40) #输出字符画高
11 
12 #获取参数
13 args = parser.parse_args()
14 
15 IMG = args.file
16 WIDTH = args.width
17 HEIGHT = args.height
18 OUTPUT = args.output
19 
20 ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
21 # 变量ascii_char: 存储用于显示图片的字符种类。我们要注意到,这个list的最后一个元素是空格,这表示,我们
22 # 将使用空格来代替原图片中灰度值最高的像素点(在灰度图像中,灰度值最高为255,代表白色,最低为0,代表黑色)。
23 # list中的第一个元素是$,这表示我们将使用$来代替原图片中灰度值最低的像素点。其余字符依此类推。
24 
25 # 将256灰度映射到70个字符上
26 def get_char(r,g,b,alpha = 256):
27     if alpha == 0:
28         return ' '
29     length = len(ascii_char)
30     gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
31 
32     unit = (256.0 + 1)/length
33     return ascii_char[int(gray/unit)]
34 
35 if __name__ == '__main__':
36 
37     im = Image.open(IMG)
38     im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
39 
40     txt = ""
41 
42     for i in range(HEIGHT):
43         for j in range(WIDTH):
44             txt += get_char(*im.getpixel((j,i)))
45         txt += '\n'
46 
47     print (txt)
48 
49     #字符画输出到文件
50     if OUTPUT:
51         with open(OUTPUT,'w') as f:
52             f.write(txt)
53     else:
54         with open("output.txt",'w') as f:
55             f.write(txt)
View Code

3.执行:

   在cmd窗口执行:python  文件路径\xxx.py 图片路径\xxx.png

 

 

 

 

 

 

     

posted @ 2017-06-23 10:04  智慧小姐  阅读(514)  评论(0编辑  收藏  举报