Python写个简单的字符画转换程序

来源:互联网 发布:redis 数据库设计 编辑:程序博客网 时间:2024/04/30 11:41

大家一定玩过这样的游戏,特别是写邮件聊QQ的时候,如 ^_^ 来表示笑脸。如果复杂一点,有办法吗?

如:这样的一张图:
这里写图片描述

`

                                                                  @@@*                             -@@ @*                                                                                                                    @@   @@       -@@@@@@@@@@@*      @@@- .@                                                                                                                    @@*@.  @@@@@@       -@@@@@*-*@@@@@     @-                                                                                                                   -@   @@@-        *@@              @@@  @-                                                                                                                    @@@@          .@*                   @@@                                                                                                     @@@@@@@@@@@@@@@@@@            @@                      .@@                                                                                                 @@             -@@              @-                        .@@@@@*-    -*@@@                                                                               -@     -@@@@@@  @@                @@                          -@.            @@                                                                             *@           .@@                   @@                           @@ -**-       *@                                                                             @@          @*             @*      *@*                          @@            @*                                                                             @@       .@*            @@@@@       *@@           @@@@          @@           @.                                                                               @@.   @@               @  *          *@@.      -@ @@-          @@-    .-@@@*                                                                                  *@@@@         -*@@@@@@@@@@@@@@@@@@@@@@@@@@@   .@@-            @*  .                                                                                           @@   -@@@@*.                            -*@@@@@@@*          @@                                                                                             .@@@@@                                             .*@@@@-    @*                                                                                           .@@*                                                       .@@@@@                                               .@@*                               -*@@@@@@@@.                                                              @@@-                                             @.@@@-                     -@@@@@.       @@                                                                   .@@                                           @    @@                .@@@             *@.                                                                      @@                                        -@     @@             @@@               @@                                                                          @@                                      @.     .@           @@.                *@                                                       @@@@@@@              *@                                    -@      @@          @@                  @.                   @@@@@.                            .@@     @@.             @@                                    @-   *@@         .@@*                 @@                  @@*   @@@-                          @@       @@.             @*                                    @@@@@@         -@@@                  @@                .@@       @@                          @@        @@             -@                                         @@        @* @.                 @*                @@         @@                         @@        @@              @                                           @@@@*@@@@  *@                 @.                @@         @@                         @@.      *@-              @                                                 .@    @@*.              @.                .@@       @@.                          @@@    @@*              -@                                                 -@      .*@@@@@@@       @-                 .@@.   -@@*                            .@@@@@@.               @@                                                 @@             @@       @*                   -@@@@@*                                                     @                                                  @@            -@        @@                                                                              @@                                                  @@            *@        @@                                                                              @@                                                  @@@@@@@@      .@        .@                                                                             @@                                                   -@     .@*     @@        -@.                                                                          @@                                                     @      *@      @@-      .@@*                                                                        @@                                                      @*      @.       -@@@@@@*  @@@                                                                     @@                                                       .@     .@                    *@@@                                                               @@@                                                          @@    @@                        @@@@.                                                     -@@@@                                                             -@-*@@-                             *@@@@@@-                                   .-@@@@@@@@@@@                                                                 @@.                                        -@@@@@@.@@@@@@@@@@@@@@@@@@@@@@@@@@*.          @@                                                                  @*                                                                                      @-                                                                  -@                                                                                      @-                                                                   .@.                                                                                   -@                                                                     *@                                                                                   *@                                                                      .@                                                                                  @@                                                                       -@                                                                                 @                                                                          @*                                                                              @@                                                                           @@                                                -@@@@*-.-*@@@-               @@                                                                            @@                                              @@            -@@            .@.                                                                              @@                  .-@@@@@@@@@@*             @@              @@           @-                                                                                -@.         -@@@@@*.            @@@          @@               @*         @@                                                                                   *@     .@@*                     -@*        *@               @@       @@                                                                                       -@@@@@.                         @@-      *@                @@..@@@*                                                                                                                           @@*    @@                                                                                                                                                      .-*-                                                                          

`

使用python,可以在100行代码里解决问题:

#!/usr/bin/python# -*- coding: UTF-8 -*-# 读入一张画,输出一个字符组成的字符画# 需要用到的类库有:# 1. pillow。可以使用pip install pillow# http://pillow.readthedocs.io/en/latest/handbook/tutorial.html# 灰度值 = 0.2126 * r + 0.7152 * g + 0.0722 * bfrom PIL import Imageimport argparse#命令行输入参数处理parser = argparse.ArgumentParser()#输入文件parser.add_argument('file')#输出文件parser.add_argument('-o', '--output')#输出字符画宽parser.add_argument('--width', type=int, default=160)#输出字符画高parser.add_argument('--height', type=int, default=60)#获取参数args = parser.parse_args()IMG = args.fileWIDTH = args.widthHEIGHT = args.heightOUTPUT = args.outputascii_char = list("@*-. ")# 将256灰度映射到ascii_char个字符上def get_char(r, b, g, 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)]# 在cmd 中直接运行.py文件,则__name__的值是'__main__';# 而在import 一个.py文件后,__name__的值就不是'__main__'了;# 从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件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)
0 0
原创粉丝点击