【Python】图像转字符画

作为Python学习入门级小脚本,简单有趣。
代码如下:

from PIL import Image  # 导入python图像处理库PIL


# 字符画使用的字符集,通过list()把元组转化为列表
CHARSET = list('$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`\'.')
# 字符画的宽度
WIDTH = 200
# 字符画的高度
HIGHT = 50


# 根据像素点的RGB值转化为字符
# @param red 红
# @param green 绿
# @param blue 蓝
# @return CHARSET[character_index] 像素点对应字符
def get_character(red, green, blue):
    charset_length = len(CHARSET)  # 获取字符集列表长度
    pixel_grayscaness = 0.3 * red + 0.59 * green + 0.11 * blue  # 计算像素点灰度值
    character_index = int(pixel_grayscaness / 256 * (charset_length - 1))  # 计算字符索引
    return CHARSET[character_index]


if __name__ == '__main__':
    print('字符画转换脚本开始执行...')
    image_path = 'E:/Workspace/PyCharm/test01/images/miaone.jpg'  # 图像路径
    image = Image.open(image_path)  # 获取图像对象
    image = image.resize((WIDTH, HIGHT))  # 改变图像尺寸
    character_image = ''  # 初始化字符图像
    # 遍历每个像素
    for i in range(HIGHT):
        for j in range(WIDTH):
            character_image += get_character(*image.getpixel((j, i)))  # 写入像素点对应字符
        character_image += '\n'
    with open("E:/Workspace/PyCharm/test01/images/miaone.txt", 'w') as f:
        f.write(character_image)  # 将字符图像写入文件
    print('字符画转换脚本执行完毕。')

效果:
原图:
喵内噶
转换字符画:
多西噶喵内
呐呐呐~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值