實現的效果:學習
#encoding=utf-8 from PIL import Image import argparse #<--------------命令行輸入參數處理----------------> #建立解析對象 parser = argparse.ArgumentParser() #在建立的對象中添加關注的命令行參數和選項 parser.add_argument('file') #輸入文件 parser.add_argument('-o','--output') #輸出文件 parser.add_argument('--width',type = int,default = 80) #輸出字符畫的寬度 parser.add_argument('--height',type = int,default = 80) #輸出字符畫的高度 #調用parse_args()方法進行解析 args = parser.parse_args() #使用 IMG = args.file WIDTH = args.width HEIGHT = args.height OUTPUT = args.output #<-----------------處理圖片--------------> ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") #字符與RGB的對應的映射關係 def get_char(r,g,b,alpha=256): if alpha == 0 : return ' ' lenght = len(ascii_char) gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) unit = (256.0 + 1)/lenght return ascii_char[int(gray/unit)] #若是是本身執行的話,就執行下面的,若是是做爲導入模塊就不執行 if __name__ == '__main__': im = Image.open(IMG) #這裏是轉換圖片的大小,而後第二個參數表示圖片的質量,一共有4種,低質量Image.NEARSET,雙線性Image.BILINEAR,三次樣條插值Image.BICUBIC,高質量Image.ANTIALIAS im = im.resize((WIDTH,HEIGHT),Image.NEAREST) txt = "" for i in range(HEIGHT): for j in range(WIDTH): #im.getpixel:根據座標取得RGB對應的r,g,b三個值,這裏的getpixel((i,j))的兩個括號很是重要 txt += get_char(*im.getpixel((j,i))) txt += '\n' print txt #字符輸出到文件 if OUTPUT: with open(OUTPUT,'w') as f: f.write(txt) else: with open("output.txt",'w') as f: f.write(txt)