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)
3.执行:
在cmd窗口执行:python 文件路径\xxx.py 图片路径\xxx.png