今天看见一个很有意思的脚本,用py实现把一副图片转换成字符画
Code:
usage:python pic2str.py xxx.jpg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
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;:,\"^`'. ")
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| $ . ' . $ @ @ ^$` $$ 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. .]$ $ $$' .$ $$. @
|