今天看见一个很有意思的脚本,用py实现把一副图片转换成字符画

Code:

usage:python pic2str.py xxx.jpg

# coding:utf-8  

#  为一张图片生成对应的字符集图片  

import Image  
import argparse  

# 命令行输入参数处理  
parser = argparse.ArgumentParser()  

parser.add_argument('file')     # 输入文件  
parser.add_argument('-o', '--output')   # 输出文件  
parser.add_argument('--width', type=int, default=140) # 输出字符画宽  
parser.add_argument('--height', type=int, default=90) # 输出字符画高  

# 获取参数  
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, 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)]  

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)  

试着转换了下头像233

                                                         $                   .     '                                                   
                                       .       $                 @                  @                                                       
                                       ^$`       $$       B       ^     .^   $      @     .                                                 
                                        .$"        <$      @      @      $   $       $          `                                           
                                  $       $@'      ..$      $     '$    .$   $      '@    #      $                                          
                              $'.   $       $B'       $$.    $     @    .$   $.      $    $      $                                          
                                $   '$'       @@$^      8`    `     $'   @   ^         ^  $      $                                          
                                  $$.'$@..     .$$      ^@   .8 `   $.    $   B       $   @      $     '                                    
                                    8$. $ '      $$^     '$    $     $   .$   B       $   @      $     $                                    
                       @.             $. @$       '%       $^  $@.   $.  .%   $       @'  @      $     B.                                   
                         $$            $  `$      '`$      $$   $'    $     . 'B      $   @.     $      '       .                           
                           $$           $$` B        @     `$"  $>   ^B.  '$'  $.     $    '     $             $`                           
                             .$%         $% "$"    $  $     $B   $    @$   B   B     B    .      $      '                                   
                               ^'%$       $$ `$     $  $.    @@  $@ .  $  `$.  "$   .$    .$     $            $                             
                                   $$$B     @'`$@    h  @`    @.  $  ` 'B  $B   $    $     $     :     $     .$.                            
                                      $@    '$.`$$   .`  $'   B$   $.@  $   @   $.   %     @    '      $     $      $"                      
              .W$'.......             ^ $%       $$   B   $^  .$$   8$ .$% '$`    `^ $          .      $     @     ^$                       
                 . .... . @$B$$$         .%   '$@  $B' %   $.^  $  .$$$ $$B $$M  $`. $    :     B     :$    .$     $'    '$.                
                           .. ''@$   $    .$$  `@@ '.$$$. .B$@ ' B@ !$  `$$' $   $$ .$    $     $      $    $     <B     $.                 
                                ` B$$ .$    @@@  $B  . $$    '   $'  $  '$   $   $$  @.   $           $    '$     @`      '                 
                                     $$$B    8B@   @$   $B  $@   $$  $B  $@  @   @L  $    $    @     .$.   .$    $      $                   
                                       $@$$   @$$  $$@   $  '$   r.  $&  $Y  $   $ .$$   $@$  ,$ ;   BZ     $         .@                    
             $@$B@  .   $B$B ' `..'      $$$    $`  ^$   $q '@    $  $   @`  B. .@  $    $^   .     $$'    $^   $     $`                    
                       '      k$$W$$B.     $$   `B`  $@.  $  $$  $W  $B  $$  $  $   $    @    $$@  `$     $   '8     $"     '.              
                                   m$;B$ ^  $Bm`  $'  $   $% '$  $$  $   $$  %  $" $    @&   $@  . @    .$B^  '$.  'B      ..               
                     "  .              B$@    $$. $B.'$`' $$$ $B. .' $'  $* $c Q$ '$    $`  $$.   $    .$$  ' . '  $`    .@                 
          ,$$$@$$@$$w$$$$$@$$$$^        ' $$   $$  $@' @   8  %U'@   `^  $M $$ $$ $B   $   88^ . @Q   '$    ^Bm   Bp   ..$                  
                             $@$$$$        ^BB`. `  $.'$   @  $B ' ' .  .@'"$+ $'.$$  .$  @`   .@     $.    $.   @$   `$                    
                                 ``.$@%$$    $$   $  $  @.  ' $'  `   C  $    .t .$'  $@ $$'  $@`   '$$   $$     $   `B.                    
                      @ $$$$$$$$$.`  .  $$$   @)%.`@ $@ '. ' ' }'$$$ @@@$%$$$$$   @  $ ' "   B$.   $    $B    "BB   $%                      
               $%$$$$  $$         $$@' ' $.$%   $ 'a "$$$$'$ @@%$$Y1 $$$$@ $_$$@$    -' .`  $B  '.$$' .$$   . $$   $$.     .B               
         "8$&                      '^ $$  ...$$ .^$$`$W$%$B$o$$$$$$'$$$$$$@$$$$B1^<$'  ' 'l$`   $:   $$$    $@'   $$.     $ .               
          '                            $%$  . ^<$@$B@ u$$$$$$$$$$$$$$$$$$$$$$$$$$$$'r$1$ "`  ` .'  $B$     $     $ "    C$.                 
                                        ' @$'  $'UZ$B$$$$$$$$$$$$$v $$$$$$$$$$$$$$@$dB$$$@j  b   .$ '"  $$$'  B$      '$$                   
                                             @Y$$$$$$$$$$$$$$$$$$$ @$$$$$$$$$$$$$$$$$$$@$rB$z  .     . $. ' $$     ''@$                     
                                             $$$$$$$$$$$$$$$$$$$$$M$$$$$$$$$$$$$$$@$$$1 B$&hB$`.'   'B.   .$$      @$'                      
                                           @$$$$$$$$$$$$$$$$$$$$$L$$$$$$$$$$$$$$$tU$M8bM$1@&$bX$$  Zu  '$@$      %$$           .            
                                         '$$$$$$$$$$$$$$$$$$$$$$@]$$$$$$$$$$$$$$$qcz#0IBj;M t$^~$      $ `     Y$q$           $'            
                                         $$$$$$$$$$$$$$$$$$$$$$c $@$%%$8B%$@%$$$$$1%[].v)<+x'bB  a   d]' ' $$@f          . @$"              
                                        $$$$$$$$$$$$$$$$$ ..     ' .I};czf')O0$$$@$j$a.$u #.uhu W|  . ^M $$             @$                  
                                      .$$$$$$$$$$$$$$$$WY     ('. QuJa$@W@$$@{@b~B$$$Q*$+q.'J\]c`-$    -.       '  ^ $$`         .          
                                     '$$$$$$$$$$$$$$$$$  `' '$d$$$@$$$]$$$ $$$"$@({%@@aC`:w~$`}$ `'U      #%$B$$$$&B$^      `'$@$           
                                     B$$$$$$$$$$$$$$B$h  ' 8$$B'&W$ $$  .b$$$$$B@$$@`$,:%u'$+'Cm~ +z   @+`{ ."           $@@                
                                     $$$$$$$$%$$$.$$B  . 'x$$$$l$$$$$$B$$8 $$$$$$$$$$-q-k,.B~n -'  x.              .`$$$  ''                
                                      B$$$&$$$   @@ 'r.  `B1$$Z$#@$$$$$$%$$$.8$$@U@$$$$Cq(  .,` . .$ ` |;$ $$$$@ $@$$                       
                                      ,8$$$      B$$. $ .&0q$$$$$$$$$$$$$$$8@$ $$~$@$$$$@.w.   '''.."    '^` '  $$ ^                        
                                       $$ '.     '$$$$w'Ou$@B$@$$$$$$$$$$$$$$f@$$B$$$Q$%$$.r  " '}^>uxB`                                    
                                      $}$$$k.     $BB$$..X'j$X$@$$$$$$$$$$$B$$XB$$$$$Z]#M$1n'`^. _}.bX ^}X'@$$$$  "B                        
                                  '$$$$$$$$$$-   B$$@ .  h].Q:-'"$Z$@@$$$$o $@@$%wj$\0$$$>a':.'+>         .   $q+%$$$$$$$$@$$$$$@ l         
                                  $$$$$$B `$_  .@$$$$ .....f($Uo$fB\ .v$$@  ' @  $B$$$$$r.  /]'. `  !.n?b$$``   .                           
                                     $$$$$ B  .$$$$@$ r    '.x0      1  $w .@iB$\$J@$$$$b|..I@ r'  .'B '.  .$@$$$.. .                       
                                     $$$$@$$$$B@$$$.  $^$$$$$ Y'    .8 @$$  B$@$$z\8@B$$Zp0<  x  ^ I$  [~        %$@$  .                    
                                     $$$$@@'X 8q$$$$$$@@B$$$$$ ...' $$$$$$@$m%` ^;'oBBQp.lC. U"_^^ '# .  Y@`         $$@$ '..               
                                     $$$$$^.  'c%$$$' $$@$@`' @$$@$ ...   ^ $$$$$$$?t$$.$c}t<  .   ~_ ~    ]$o             $B$8  .          
                                .   .$$$$$$ .$  b}  <   q .x$@$$ $B$.$$    $$$$@ $vB)cW'.$uzU*1.. `'   $   ., B$$                           
                                 8$$$$$$$$$ .o$$ '+. .  '{$ > $B $$ . . `@ @Bk'B$.hf$$$QWj] !. (`^.  .  '$$     .$@ .                       
                                  $$%$$$\$B@ @@@:    $ Xv@      '$$vb$ `$$Y$@$$$zf.)Q].I/Z   .   c' _: .  @$o      '$$                      
                                 .$$$@$$'$B^@$$$@@ .$@$B.$ $      $*$j@$$@Q$.%'$@$(&Ji$&:` ^ur' 0`k '  ^     $B.       '$$                  
                                 _.  $8$$[$B '$@ $ $$$$$`$ $$    .B$$$$B.@f {w$$  ` .> .>..+p`\'n .@Q.  8@   ` $$'       '$$'               
                                $p$$.$Z ^$M8$.$$$$$a0.$$   %$$$@%@$$.$ $ %. @ $@'   . '. 0kvqjr8.?$  w' >$$      $$$                        
                               8$ $^ $$@  $ . $$  $$ $.$$   $$$$$$$('    $ . @$$_.. ^  j0$  '^o{$'I$  \  ''$.    '$$$.                      
                               $%@$$$%<  $$Z  "$$$'$@$  $   8$$$$$'l           $@$u`Lp$ '.      $   $` $.  .$B     . $B                     
                              $$`$$@$$$  .$$.   $$ `$$      '$$$$$f.$$           " &@           `$  $B  @    $$      . $"                   
                              $$ $$ $$    $'    '$  ' $'      $$$$$?+q$                         . $  Y   $    .@$'     `"$@                 
                              $  $ .$$    $.     '@            $B$$$h.$%.                        . $  .B 'B '   Z$.                         
                                 $  @     @#                    $$$$$<XL@                         $$   B^ 'BB     $.                        
                                    $      $`              ..   $B$$$.n$$                         .o@^ ` ' '@      .                        
                                           $.               $''$$$$$$$$$$B                          $,  $    $ `    .                       
                                                          .@$$@BB$$$$$i                             B$.  $    $      .                      
                                                 '       $$@$ $ $$$$`$$                              @.       '$.                           
                                                 @      $@B$$ @ @$$: $$                              8   .$     $                           
                                                 $B  . .$$ .$%$z$$Y$.$.                              `$.  .$      '                         
                                                  @  $ $$B %$ $$$$@                                   $`    '                               
                                               $. @$_"$ .$.$@$$$C%.                                   .$                                    
                                              Z$@  $@@ $$$8 n$$<W$.                                          .                              
                                             $$$$@% $$@$"@h$$&0}&$                                                                          
                                            :$,$$$$$ @.$@r$]8$B/.$'                                                                         
                                              8 $$ $$8$k@'@ B'x  .                                                                          
                                               *. @$$$@B$@x'Q ZB                                                                            
                                                 $$$Y@$${B. .]$                                                                             
                                                  $     $$' .$                                                                              
                                                          $$.                                                                               
                                                          @                                             

2017-09-05
Contents

⬆︎TOP