美文网首页
ASCII码字符画制作

ASCII码字符画制作

作者: MingSha | 来源:发表于2017-07-16 18:04 被阅读0次

    许多时候,看到一些字符画,其实用python可以很快制作出来。
    结果如下,左图为结果,右图为实际图。在使用时可以根据需要更换不同的图片。

    Paste_Image.png
    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 = 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;:,\"^`'. ")
    
    # 将256灰度映射到70个字符上
    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)]
    
    size = 10
    
    if __name__ == '__main__':
    
        im = Image.open('ascii_dora.png')
        im = im.resize((size,size), Image.NEAREST)
    
        txt = ""
    
        for i in range(size):
            for j in range(size):
                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)
    

    相关文章

      网友评论

          本文标题:ASCII码字符画制作

          本文链接:https://www.haomeiwen.com/subject/tafxkxtx.html