图片转字符画

图像的字符画绘制

图片是由不同的像素点组成的规则分布,如果采用字符串代替像素,图像就成为了字符画。
首先定义一个字符集,将这个字符集代替图中的像素点,使得每个字符对应不同的颜色。
不同的字符带来的视觉效果是不一样的,像@#¥之类的字符会色彩感会比较浓密,而_!{}/一类字符空白较多一点,一般表示浅色。
代码实例

待改编图片
在这里插入图片描述

from PIL import Image
ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')
def get_char(r, b, g, alpha=256):
    if alpha == 0:
        return ' '
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unit = 256 / len(ascii_char)
    return ascii_char[int(gray//unit)]
def main():
    im = Image.open(r'C:\Users\staring point\Desktop\3.jpg')        #文件路径
    WIDTH, HEIGHT = 900,500             #文本宽度高度
    im = im.resize((WIDTH, HEIGHT))
    txt = ""
    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j, i)))
        txt += '\n'
    fo = open(r"C:\Users\staring point\Desktop\pic_char.txt3","w")      #保存路径
    fo.write(txt)
    fo.close()
main()

转换后效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值