1.Python 圖片轉字符畫


Python 代碼完成圖片轉字符畫小工具

ascii_dora.png 圖片:


ascii.py 代碼如下

__author__ = 'xiaofan'
# -*- coding:utf-8 -*-

from PIL import Image
import argparse

ascii_char = list("$@B%B&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.")

# alpha[0,255]  0:tou ming
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return  ' '

    length = len(ascii_char)
    # rgb[0,255]    gray [0,255]
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unit = (256.0 + 1)/length
    return ascii_char[ int(gray/unit) ]

def Parser():
    parser = argparse.ArgumentParser()
    parser.add_argument('file' )
    parser.add_argument('-o',type = str,default = 'output.txt')
    parser.add_argument('-width',type = int,default=80)
    parser.add_argument('-height',type = int,default=40)
    args = parser.parse_args()

    dict = {'IMG':args.file , 'WIDTH' : args.width,
            'HEIGHT':args.height , 'OUTPUT':args.o }
    return dict

def ImageToAscii():
    dict = Parser()

    IMG = str(dict['IMG'])
    WIDTH = int( dict['WIDTH'] )
    HEIGHT = int( dict['HEIGHT'] )
    OUTPUT = str(dict['OUTPUT'])

    im = Image.open( IMG )
    im = im.resize( (WIDTH ,HEIGHT ) , Image.NEAREST )

    txt = ""
    for h in range(HEIGHT):
        for w in range(WIDTH):
            txt += get_char( *im.getpixel( (w,h) ) )
        txt += '\n'
    print txt

    if OUTPUT:
        with open(OUTPUT,'w') as f:
            f.write(txt)


if __name__ == '__main__':
    ImageToAscii()


命令行運行 >python  ascii.py  ascii_dora.png


結果如下 output.txt:

                                                                                
                                                                                
                              $WJxxx#l.|Oxz,.|#$                                
                          $uxxxxxx#l.....|X.....kxJ$                            
                      $$xxxxxxxxxx.....Cf,h.h,h..zxxxB                          
                    $Yxxxxxxxxxxxxl...<...hl.....Xn#Lxx$                        
                   $xxxxxxxxxxk|..C{......,|#kahf.....|O$                       
                  #xxxxxxxxW.|.......CpO,.nk..)kB..l#<.p....$                   
                 kxxxxxxx#..........<Cp-...Bkkkh<............                   
                $xxxxxxxX....................|n..............                   
                xxxxxxLC......................X.............$                   
               $xxxxxx<....fakkkkk**W$p$n.....-..........hf$                    
               $xxxxxJ.....*kk*B&akkkkkkkkkkkkh*W%%p&%WM..-                     
               $xxxxx#.....Wkkkkkkkkkkkkkkkkkkkkkkkkkk*...p                     
               $xxxxxp.....{kkkkkkkkkkkkkkkkkkkkkkkkkM...O$                     
                dxxxxd......C%jjjjjjjjjwWkkkkkkkkkkk*....                       
                $xxxxx{......-jjjjjjjjjjjjkkkkkkkk*,....$                       
                 $xxxxu#.......hjjjjjjjjjjjxkkkka<.....$                        
                  @xxxxx-........Wjjjjjjjjjj&kkh......$                         
                   $xxxxxO..........,oCjjjz#l.......B                           
                     dxxxxO....{O%M*kB.....kkaWoBakkB                           
                      $BJ%hkkk*%#qJJX.......lXwbXbw<X                           
                       $aB$uxxxxxxxx,........lllX/l,.$                          
                        $xxxxxxxxxxxB.......plllXlh..$                          
                         xxxxxxxxxxxW,#{.-h...<---...p                          
                         qxxxxuomxzO.-...............n $......-$                
                         $xxxxxxxx#..................|.........,                
                          xxxxxxxxd-..f.............h...........$               
                    $Wka$ mxxxxxxxxO....n|.......X{.-..........l                
                    Wkkkk$#xxxxxxxxxq.............|x...........*                
                    $#kk$ zxxxxxxxxxxxJX.......-kxxx..........n                 
                         $xxxxxxxxxxxxxxxxxxxxxxxxxxh........B                  
                       $|#xxxxxxxxxxxxxxxxxLB$$      $C...{$                    
                      ,..nxxxxxxxxxxxxxB$                                       
                     $....nxxxxxxxxL$                                           
                     p......ouxxx$                                              
                     $...........$                                              
                      B,.........|                                              
                        $|......|$         




         




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章