直接上代码
from PIL import Image import argparse parser = argparse.ArgumentParser(); # file文件 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) # 解析参数 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;:,\"^`'. ") # 获取打印符号 def get_char(r,g,b,alpha=256): # r(红) g(绿) b(蓝) # 判断透明度 if alpha == 0: return ' ' # 字符长度 length = len(ascii_char) # 图片转灰度公式 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # 根据灰度获取随机数 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循环,一行一行打印 for i in range(HEIGHT): # 一个一个字符打印 for j in range(WIDTH): # 根据灰度获取字符 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)
以上代码来自互联网:https://www.shiyanlou.com/courses/370/labs/1191/document