zoukankan      html  css  js  c++  java
  • 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)
    

      上实际效果:

  • 相关阅读:
    突破
    leetcode刷题 538~
    leetcode刷题 519~
    Docker练习之镜像更新方法1
    十二 Linux之tar解压缩
    十一 Linux软件包管理yum
    十 Linux指令之grep
    九 linux指令之find
    八 Linux ps指令查看进程和kill杀进程
    七 Linux top命令
  • 原文地址:https://www.cnblogs.com/lclblack/p/7095251.html
Copyright © 2011-2022 走看看