• [Python] IMG to Char


    Change image into character

    from PIL import Image
    import argparse
    
    #输入
    #命令行输入参数处理
    parser = argparse.ArgumentParser()
    
    parser.add_argument('file') #position argument
    parser.add_argument('-o','--output') #optional argument and -o is a short option
    parser.add_argument('--width', type = int, default = 80) #optional argument
    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):
        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__':
    #When the Python interpreter reads a source file, it executes all of the code found in it.
    #in main program, __name__ = __main__
        im = Image.open(IMG)
        im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
    #Image.resize(size, resample=0)
    #Parameters:    
    #size – The requested size in pixels, as a 2-tuple: (width, height).
    #resample – An optional resampling filter. This can be one of PIL.Image.NEAREST (use nearest neighbour), PIL.Image.BILINEAR (linear interpolation), PIL.Image.BICUBIC (cubic spline interpolation), or PIL.Image.LANCZOS (a high-quality downsampling filter). If omitted, or if the image has mode “1” or “P”, it is set PIL.Image.NEAREST.
    
        txt = ""
    
        for i in range(HEIGHT):
            for j in range(WIDTH):
                txt += get_char(*im.getpixel((j,i)))
            txt += '
    '
    
        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.cnblogs.com/KennyRom/p/6354127.html
Copyright © 2020-2023  润新知