python-实战小项目01--图像字符转换

python图像字符转换

本程序运行在linux环境中


    # python3.6
    # 图片转换工具
    # 本代码在linux环境下运行
    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=40) # 输出字符画宽
    parser.add_argument('-height', type= int,default=40) # 输出字符画高
    
    # 获取参数
    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;:,\"^`'.")
    
    # 将 256 灰度映射到字符上
    def get_char(r,g,b,alpha=256):
        if alpha == 0:
            return ' '
        lenth = len(ascii_char)
        gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    
        unit = (256.0+1)/lenth
        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)))
            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)

猜你喜欢

转载自www.cnblogs.com/yangaoteng666/p/9274307.html