Python图片转字符

    前段时间学习pillow写的,可以通过改变font_map改变转换的深度和字符。思路是先转换黑白大小,读取黑白值取范围读font_map转变。

from PIL import Image,ImageDraw,ImageFont
import os
import time

def save(img,file_name) :
    if os.path.isfile(file_name+'.jpg') :
        save(img,file_name+'-')
    else :
        img.save(file_name+'.jpg','JPEG')
        
font_map = [' ','.','i','I','J','C','D','O','S','Q','G','F','E','#','&','@']
img_name = 'bb'
f_size = 16
f_num_x = 100
def main() :
    im = Image.open(img_name+'.jpg').convert('L')
    im = im.resize((f_num_x,int(f_num_x*im.size[1]/im.size[0])))
    level = im.getextrema()[-1]/(len(font_map)-1)
    im = im.point(lambda i : int(i/level))
    imn = Image.new('L',(im.size[0]*f_size,im.size[1]*f_size))

    f = ImageFont.truetype('arial.ttf',f_size)
    d = ImageDraw.Draw(imn)

    for y in range(0,im.size[1]) :
        for x in range(0,im.size[0]) :
            pp = im.getpixel((x,y))
            d.text((x*f_size,y*f_size),font_map[len(font_map)-pp-1],fill=255,font=f)

    save(imn,img_name)

if __name__ == '__main__' :
    tt = time.time()
    main()
    print(time.time()-tt)

  上实际效果:

posted @ 2017-06-29 16:40  lclblack  阅读(3654)  评论(1编辑  收藏  举报