zoukankan      html  css  js  c++  java
  • [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)
  • 相关阅读:
    用OSCache进行缓存对象
    oscache的使用
    WHM(Web Hosting Manager)/CPANEL 设置及linux 文件权限 经验
    辗转相除法求最大公约数和最小公倍数【gcd】
    u6填写入库单单据报错
    账表名称无法显示
    商贸通反利怎么计算
    UFO报表转换不成功!请检查文件版本或使用DOS文件转换工具
    备份计划不执行
    821升级U6报错
  • 原文地址:https://www.cnblogs.com/KennyRom/p/6354127.html
Copyright © 2011-2022 走看看