實現的效果:


需要掌握的知識:
1):Python的基礎知識
2):argparse庫
3):piilow的Image
#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)
總結:
1:argparse命令行參數處理的使用過程
1):創建解析對象 parser = argparse.ArgumentParser()
2):在創建的對象中添加你所關注的命令行參數和選項 parser.add_argument()
3):調用parse.args()方法進行解析
4):使用
2:im = im.resize((WIDTH,HEIGHT),Image.NEAREST) 這里的resize()是轉換像素的意思,第二個參數表示轉換的質量