zoukankan      html  css  js  c++  java
  • Python3 图片转字符画

    https://www.shiyanlou.com/courses/370/labs/1191/document

    from PIL import Image
    import argparse
    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)]
    parser = argparse.ArgumentParser()
    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
    
    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 += '
    ' 
    
        print(txt)
    
        if OUTPUT:
            with open(OUTPUT,'w') as f:
                f.write(txt)
        else:
            with open('output.txt','w') as f:
                f.write(txt)
  • 相关阅读:
    IDEA快捷键
    nginx之epoll模型的详细介绍
    Liunx权限修改命令
    小技巧3
    小技巧2
    小技巧1
    Ajax的简单使用
    dubbo
    快速创建虚拟机
    登录和注册功能的实现
  • 原文地址:https://www.cnblogs.com/xiaodebing/p/9202278.html
Copyright © 2011-2022 走看看