网上看的实验楼的教程,自己理解了一下。可还是觉得不好,因为不能复制,太傻了敲。就在自己电脑上运行。结果发现居然还要在CMD里启动。效果不理想
决定把它改良一下,太呆滞了,用命令行打开。而且效果和我差的有点远啊。
有空去网上找下,把它给修改一下。应该挺多的。洗澡去了;
太不友好了,CMD,就会一个CD和DIR ,最多加个IPCONFIG ,PING 一下。要求不要太高了
#!/usr/bin/env.python # _*_ coding: utf-8 _*_ from PIL import Image import argparse parse = argparse.ArgumentParser() parse.add_argument(‘file‘) parse.add_argument(‘-o‘,‘--output‘) parse.add_argument(‘--width‘,type= int ,default= 80) parse.add_argument(‘--height‘,type=int ,default= 80) args = parse.parse_args() IMG = args.file WIDTH =args.width HEIGHT = args.height OUTPUT = args.output ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`‘. ") # 获得字符串的颜色 def get_char(r,g,b,alpha = 256): if alpha == 0: return ‘ ‘ length = len(ascii_char) gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 将RGB颜色赋值给灰度值,固定公式。灰度值公式将像素的 RGB 值映射到灰度值 unit = (256.0 + 1)/length return ascii_char[int(gray/unit)] if __name__== ‘__main__‘: im= Image.open(IMG) im= im.resize((WIDTH,HEIGHT),Image.NEAREST) txt = "" for i in range(HEIGHT): #按照高宽循环。打印一张图片,前后无所谓。 for j in range(WIDTH): txt += get_char(*im.getpixel((j,i))) #im.getpixel(()) 返回给定位置的像素值,这一点的RGB,三位数。然后用灰度值显示。 txt += ‘\n‘ print(txt) if OUTPUT: with open(OUTPUT,‘w‘) as f: f.write(txt) else: with open(r"C:\Users\HBX\Documents\staudy\output.txt",‘w‘) as f: #输出文件到本地文件夹。 f.write(txt)