python——PIL模块实现图片转字符画

以前发过基于PIL模块实现其他图像处理的文章https://blog.csdn.net/sm9sun/article/details/77703551

今天偶尔在网上看到了一些关于图片转换成字符画的相关内容。

其实这个也蛮简单的,无非就是把原画本身的颜色映射成不同的字符,字符可以按照填充系数排列(比如说@这个字符填充系数最大,.这个字符填充系数最小)从而实现字符画呈像的效果。

通常的做法是按照原画的灰度值来排列,比如说黑色我们用@,白色我们用. (文本的底色是白色的)

图像的灰度值公式:

1.浮点算法:Gray=R*0.229+G*0.587+B*0.114
2.整数方法:Gray=(R*30+G*59+B*11)/100
3.移位方法:Gray =(R*77+G*151+B*28)>>8;
4.平均值法:Gray=(R+G+B)/3;

也可以用convert("L")方法将其转换成黑白图,再求取灰度值参数。

完整代码:

# -*- coding: utf-8 -*-
from PIL import Image

codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''#生成字符画所需的字符集
count = len(codeLib)

def transform1(image_file):#黑白图
    image_file = image_file.convert("L")
    codePic = ''
    for h in range(0,image_file.size[1]): 
        for w in range(0,image_file.size[0]):
            gray = image_file.getpixel((w,h)) 
            codePic = codePic + codeLib[int(((count-1)*gray)/256)]
        codePic = codePic+'\r\n'
    return codePic

def transform2(image_file):#灰度值公式
    codePic = ''
    for h in range(0,image_file.size[1]):
        for w in range(0,image_file.size[0]):
            g,r,b = image_file.getpixel((w,h))
            gray = int(r* 0.299+g* 0.587+b* 0.114)
            codePic = codePic + codeLib[int(((count-1)*gray)/256)]
        codePic = codePic+'\r\n'
    return codePic


fp = open('img/nine_sun.jpg','rb')
image_file = Image.open(fp)
image_file=image_file.resize((int(image_file.size[0]*0.75), int(image_file.size[1]*0.5)))#调整大小,针对于记事本视图
print (u'Info:',image_file.size[0],' ',image_file.size[1],' ',count)

tmp = open('img/out.txt','w')
tmp.write(transform2(image_file))
tmp.close()

测试样例:

用记事本打开输出文本,选择(宋体 小六


python——PIL模块实现图片转字符画_第1张图片


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@-+(@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@QQQQQLi!!llII;;;;;;;;;Illl!!<0QQQQQ@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@QQQQOtUQnI;;;;:::::::::::;;;II\QLu0QQQQ@@@@@@@@@@@@@@

@@@@@@@@@@@@@@QQ_!!lI!Qn::::::::::::::::::;\QllI;;:QC:::::::::::::::::::vQ;;;ll!?@@@@@@@@@@@@@@@

@@@@@@@@@@@@@>!lI;;::::::::::::::::::::::::::::;;;l!!_@@@@@@@@@@@@@

@@@@@@@@@@@X<~+~<;Il!Uz?..............^_;;;;;;;;>|[zY'............."1a@@@@@@@@

@@@@@@|'\dddd,..............')I;;;;;)"Idddd1..............<\@@@@@@@

@@@@@|+.tdddd<<-1)(1}?!:'....?>;;;;l..idddp(>[{)){[i,......!8@@@@@@

@@@@@u1i+1->I;IlIII;;::,,l<+>;;;;;;;![#pI@@@@

@@@@@@]li<_-?--_+_-??_il>#kZ@@@@

@@@@@%~~_-][}[[]+><~__--_++__--_+~<ii!ii>>ii!!!lllllllllllllllllllllllllllllll!!ii>>>ii>i!!!!!!!!!!lllllllllllllllllllllllllllllllll!!!!!!!ii~C@@@@@

@@@@@)~>>i{X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/iii><+@@@@@@

@@@@@L~<>iiL|iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii?_ii><<1@@@@@@

@@@@@@}<<>i)Qiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii~Lii><<~w@@@@@@

@@@@@@w~<<>!j(iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii?QXi>><~~@@@@@@@

@@@@@@@~~<<>!QX<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Qcl>><~~]@@@@@@@

@@@@@@@|~~<<>_LQ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>(Q1l><<<~_&@@@@@@@

@@@@@@@@(+~<<>l|Qv+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tLQtl!<<<~~+@@@@@@@@@@

@@@@@@@@@@_+~~<ll!fYQQQQQQQQQQQQr{>l!i~~~~~~++_@@@@@@@@@@@@@

@@@@@@@@@@@@@o]++++~~~~~~i!lllllllllllli><~~~~~~+++_c@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@B+++++~~~~~~~~~~~~~~~~~~~~~~~~+++++]@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@h1_++++++++~~~~~~~~~~~++++++++_X@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@Bn?__+++++++++++++++++++__|b@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@pf____+++++++++____UB@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@WOXrf/frCb@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


python——PIL模块实现图片转字符画_第2张图片

python——PIL模块实现图片转字符画_第3张图片

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

..........................................................''..........................................................................................

......................................................''.`~,........''..',^'``........................................................................

................................................''i;':;'.'''```'..'`l!:`;~i!+''-l:.......`''',;:!,`'..'.......................................................................

................................................[f>_''.'..'''';.^,.''+1_>~^''`'.......................................................................

.............................................'"'I/<.''``':"''`^II'i;".'............`..................................................................

......................................'.;....''.'>;>I\)`'`^'...'^.''";^;''.'.......`..................................................................

......................................'..`'....'`|t\IIi^........,`..'``........'......................................................................

...................................."'.,'''.'.>i:,,`'.'",,"'...................................................................

...........................",x:''...'.'''^'i]^'"I[;f.^!`''....`;"",^''................................................................................

.........................'''1v|"''...'.^;,I'^:'..',*@BmI.'.''....'.`.''....''..............''umC`.....................................................

...........................;(r\l.!''''";l`''.'`.`t_f@@@@@8...'.`^```......................d@@@@@@@B''.................................................

.........................:`!|/:i~''''.;,''.''!';)fj`d@@@@@c.`'..........................-@@@@@@@@@@@B.................................................

........................'.'^',\1,~.`!'...,`''^}{{I)?~w@@@@&@@@''..................'....B@@@@@@@8@@@@@k...............'...`.'..........................

.......................''';)}x?1(`)~'....'^l,:l.'l<"'@@@@@@@@@@@B.................xu'.B_...l-...B@@@@%..........'.^:;'I!ruxXunr?^.....................

......................'.'^:]{'"".................

....................'.`'''i':+['[ux1}_,''<.';%@@@@@@@@@@B...B@@@@..................@@@@v..'''...B@@@@l'i}//czvZbbpho*WWWMb#WW&&&WWp0n>................

..................''''.[^'`'?x+t_;x[jll'd@@@@@@@@@@@@@@W...(@@@W...................B@@@?`B@@B`..B@@@@f(tYcYQZZqh###M#W&&&WM&W&&8W&MapX|'..............

..................."'>f)|?'!;1v\.-,?;`,'.]@@@@@@@:@@@@@...(@@@B....................B@@@@@@@@@@0.B@@@@zjYO0qZ0Ydb*WWMWWW&WW&&&W&&&8W&MmX<..............

..................".';,<[.'^^t)'``,I{}>'>^'._[...@@@@@....@@@@...................."@@@@@@@@@@@{.B@@@@vYCZqqbkhaMMMWWWWWWWWW&W&8W8&8&8hC\\'............

.................`^_`,\1"':.+\`:!"`!xf+(]!......w@@@B....%@@@].....B..............l@@@B@@@%u....@@@@@zJzzdbhaaoWWWWW&&&8&WWW&&88&&&8&M*OYuI...........

.................i<'Ir,>^(jt\[^..;,/ufx(]I'^...~@@@@....'@@@r.......k.............>@@@\........'@@@@@zcJUwZdo*o&M&&W&8MWWWWMW&&WWW8&&&WamU1'..........

.................'`i'>f>f[,v|'^'..+/xxj[!+;'..h@@@@'....@@@@........J8............I@@@`........'@@@@@uvuQLpkhoMMW&WMMWMMMWMWWW&WWW&WWWWWdZvI..........

..................'.|,':/txr>`.'.'[_l\!`i!^..h@@@@[....n@@@Y.........@@L..........'@@@....'+'...@@@@@tUQQqdhk##MMWWMWM#WWWWWWWWWW&&W&&&W#kLf;.'.......

..............._j?/xcr>`!|r1'};".I::)[lIX;'.B@@@@......z@@@..........@@@B..........B@@h@@@@@@B,'@@@@@YCQObkk*##MMWMMMWMMMWMWWWWW&&W&&&W&Mhmrl.........

............'.'|cnr}`\]`I'l:"'^`'~"I)}<~|B%@@@@B.......<@@@@}......_@@@@@@l........B@@@@@@@@@@@}@@@@@/vJzddo#MM##MMMMWMMMWMMWWW&W8&&88WWW#mri.........

.............'"~f?``+,':+'''.:~"!'._j:'>'@@@@@..........\@@@@@@@@@@@@@@@@@0........l@@@@@Bh).v@@@@@@@jtzQ0do*MMMMMMMWWMWWMW&WWW&&&&&8&&&&#dn)'........

.............':'.^?||^_It/[';]'`'~jtt]!<..|?..............B@@@@@@@@@@@@B,...........>%B{...'..h@@@@@%/nrXCZpo*o##MMWMMWWWW&WW&&&&W8&&&&WWMpXx`.'......

..............``'';r|.''nr\''I`(\~fr|?I:.......................`li'............................B@@@@/\/fu0Zwba*M##WMWWMWW&W&&&&&W&&8&8&&WWawx>........

..............^.".>;'I!.|f;)ru?v)`jx(>'........................................................-@@B"+_/txCQmdho#*MMWWMWMWWW&&&&8W&&8&8&&&&#Oci'.......

..............;''``~l~^`l1`rUUXYzvYx|~-`........................................................Z|'",+(1rYOwbhao*##MMMMWWM&&&&&&&&W&&&&&&&MqJ<'.......

..............(,(\f(.,`^~!'/x/,1rvnj+)~`...........................................................`"!|1vULmqba###MMMMWM#WW&WW&&8W8&&8&&&W#Zv:........

.............'''~'+t^.^';^'','`tfYzvI[~.............................................B@a`...........'^:~(1rULmd*#MMW#WWWWW&&&&&W&88&&8&88&WM0|'........

............'Ifl'IzuI^~';,`.};\vnQYY()[email protected]@@@L'..........'^lI))tzZqoMMMWMWMMW&&&&&&&&W&&W88&&W&Mdv'.'......

............'`-/f(Yz?:cUu1,!}\vJUO0Lu|?'..............%@@@@@@J......................+@@@M...........'^:<_)tX0ma*MWWWWWWW&WW&&WWWWW&&&&&WW&MpzI'.......

.............:`iI'I!]j\CLu`jc;,CcqZ0nf-'...........'@@@@@@@@@@'.....................d@@@@B`........k@B8-_/jvOwa##WW&W&WWW&&&&WW&&&&88&&&&WWqz;........

..............`!`:)}]l{zv)^;zJJwOQ0Ocf[.........M@@@@@@@@@@@@d.................tbu&@@@@@@@a..c@@1?@@@@@@v})cJZo##MWW&W&W&W&WWWW&WW&W&WW&WWWQt`........

.............I''l<]_'I",{`'1[_YmJm0Czr1..'......./@@@@@@@@@@....................X@@@@@@@p'....B@@B8b.%@@U()zQZo#MMWWWW&W&WWWWWWWW&&W&&&&&&MbJ-'.......

.............`.`it+!.`''itlICwpbppqwJXf`.'..........0@@o@@@Q......................U@@@@,^.....B@W'...%B@f|/cCm*##MMWW&WWWW&&&W&&WW&W&&&&&�v'.'......

.............`.I,'|{.''fjr;[UdbdkbdwUufi...............8@@B.......................t@@@@@@@Bh.'%@}'1..%@@](1jUOoM#MWMWWWWW&W&&&WWWWWW&&8&WW*v<'........

................`'|?_I.`UX`!ZhbdbdbwCxv{'..............@@@h..................b..:@@@@@@['@@@8`%@@@@@a@@B>]/xCqo#MMWWWWW&M&&&&8&&&&W&&&W&WW*r,.........

..............`.)`jf',"?UOY_ZbahhhhbQXJf,'............w@@@@B.................B@BC'`(XL_.,@@@l'%@@@@@OB@&+ffcwaM#MM&WW&W&&&&&WW&8&&&&&&WW&Wh]`'........

..............'.}xuUz,njLZt^LdoaohhdwOLz-.......!OMB@@@@@@@@@Z...............i@@BC@@@@@~U@@o.B@@w'@B'B@w[1rQwh##MM&&MW&&&&&&&&&&&&&&&&&WMMw)'.........

.............`+I-fivLZQcZkqnnboohaakbqOU/;....@@@@@@@@@@@@@@@B................;B@.'W@@h.%@@'@ZB@'&@'^BBq]\v0haoMWWW&&&8&&&W&88&8W&&&&WW&W*Y`''........

.............'!x?`',?Y+YwhamQo*#*aohdkqwYt....@@@@@@@@@@@@@@M..................8@'X@@%h%@B..b:BB'%@@O*@0{/cZao#MMWWWWW&&&W&&&&W88&&&&&&8W*x...........

...............uvx^/mo*#*o##*o*ahkahpZC{,...>@@@@@@dLLmoBB@'..............Q@@@@@r.'.'''%@@@@:~-u@8Ywpho#*#MMWWW&WW&&&&&&&&WW&&WWWMY/............

...............''r;Xv`:<'|QhhoLoo####**oaabbqCt"B@@@@@@@@@@@@@@@@@;........>ZB@@Bb"'@@/......B@`@@<}}\@Bqhao#MW&&WWW&888&&&&&&&&&&8&&&Mon,............

.................xCLzcvY~JL{baa#**o#ooo*aaap@@@@@@@@@@@@@@@@@@@@@@@1......h@@@*`...`@@r.....'@B',W@o|u@@qh#WWW&&&W&&&&88&8&8&88&8&8&&&Ww|`............

................."YLc;!OwCJX0moMMM*#Mo*o*oab#@@@@@@@@@BOf!^``">C8@@@......'^[......'@@]....+%@^;!]#B@@@@oWM&&WW&&&888888&&8&&&&888&&&WMx``............

..................|xl+'rwO"Cda#MMMMM#M##**oakw@%OYf!.'..............................B@.....'@;i-[}|Z@@@@aWW8&W&&&&&888&8&88&&&&WW&&8WMq~'.............

..................'//}jfzOX1}p#MWMMWMWWM##*##hwZZ0Lv}~..............................'%...',I~{1{\rzmpB@@*WWW&&W&&&8%8&8&&8&888&WW&W&Mbr...............

.....................'"''Cqz?d#MMWMWM&WWMMM##MohdZO0Lv~''..............................'"I__1/jvz0bho#qwW&8W&&88888&88&&&&&&&8&88&&&#j`.'.............

.....................)].([Cc'ZoMWMM#MWMM###M*M#**kqZZOU||i^^'........................`,>~?(rxXLwkho##MMW&8&&88&888&&&8888%88%%8&&WWoY^'...............

.....................)f-,lvOZQjOoMMM*#MMMWW####*oohdmZZOQc(1_,"^''.'.........'''.,;<~l]/trzJZah**#MWWW&88&&&%8&8%8&&&8%%%8%%8888&&Mdl'................

......................,Ir|,jZL_\baMMMMM#WWWWMM#M#o*hahdZZOmZz|{-~i>i,^`^`'^,"!l><]11ttxuJmbkho*#*oW&&&&&&&888&&&888888&88888&&&&&&pn..................

......................'_>.1I{-xqhhhMMWMMWMWWM##MM###*hbpwOmmQJYJYrtr{-]/}{-[r1j/|xzYLQwqdhhoo#M#WWW&&&&8&8&&WW&88888&8&8WW&&W&&WMbf^'.................

.........................~:}l;iXCQY{YmdoMMMWWW&WW&WW&&&WWWW&MMMM##oo##MMWWM&WM&&&&&&888&&&8&88WW&W&&&8&88888&&&W&M&8Mo)..........................

...............................`,,,/)`:,^..`1dMW&WWMMMMW&&&W&WW&&WWW&WM&&WWW&&W&8WWW&8&888&&WWWWWW&&&&&W&8&88&8888W&&WM#azf'..........................

...............................'.._'`|:^'.?)'vdhMWM&MWW&&8&&&&&&&&&8W&&8&&WW&W&&&&&&MW&&&W&WWWMMWWW&&8&8&%88888&&888&MkO1^............................

..................................''.`.''`'^_]'Qo##WWW&WM&&&WMWW&&W&&88&W&WW8&&&8W&WMMMMM#MMWWWW&8%88%8%%%8M&&&W#*##*w]^..............................

...........................................`[_Om_rOp*#WWWWMW&WMMWMMWMWWW&&W&&MMMWWWMMMW&&&888&&&888888&&&&WWMM**aamz+.................................

.......................................'.'"jnJJc,UQljk*MWWMWWWW&WWWMWMWWMWWW&&&WMM#&%%&&88%8&8&&&&W8&WW&MMM#***kmX~'..................................

.........................................''':~vcfI!qp*MMM#MMWMWWMMMMMWWWMW&&WWW&&%8&W88&88WW&WWWWW&MWMWMMMM#ohL(:'....................................

...........................................'1/I'z/_OdqwMMMWMMMM##M#MMMWMWWWW&&&8M&WWWWMM#MWMWWWMMMWWWMMMW&*dX[''......................................

.............................................;xcCUXUphooa#hko#MMMMWMWWMMW&WWMWWMWMMMMMMWMMWMWWMMMWWWM#M*qX|''.........................................

...............................................`i)tutlmOOUc;+mpqmko##W&WWWMWWWMM#MMMMM#MMMM&&&WWMM#od0c{.'............................................

...............................................'..."+|{~x;_Yn!{':,''`'............................................................

.......................................................................................''.............................................................

.......................................................................................''.............................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................

......................................................................................................................................................


你可能感兴趣的:(python)