Python图片转字符画

Python图片转字符画

源图片:

效果图:

第三方库:PIL
如果没有安装该库请执行 pip install pillow 进行安装第三方库
# -*- coding: utf-8 -*-
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 = 'convert1'   # 图片文件名
f_size = 16
f_num_x = 100


def main():
    im = Image.open(img_name + '.png').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)

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值