Python:利用Pillow库创建字符画

我们就用这个可爱的小龙猫来做模板

小龙猫

这里,先导入我们要用到的Pillow库中的Image模块

from PIL import Image

创建Image实例,路径的话请自行修改

img = Image.open(r'.\Demo.png')

创建一个文档以便于接收字符

fp = open('字符画.txt', 'w')

获取图片的大小

width, height = img.size  # 获取图片大小

若是图片太大的话先缩小下图片

img = img.resize((width, height))

遍历图片的像素点 把对应的映射字符算出来

for i in range(1, height):  # 从上至下遍历
    for j in range(1, width):  # 从左至右遍历
            R, G, B= img.getpixel((j, i))  # 获取目标位置RGB值
            sum = R + G + B
            index = int(sum / 30)  # 以30为一个间隔
            fp.write(chars[index])
        fp.write('\n')  # 写完一行便换行
    fp.close()

值得注意的是这里所用的图片通道为RGB 若是不一样的话先转换为RGB

print(img.mode)  # 查看当前通道
img = img.convert("RGB") # 通道处理

OK 跑起来!

if __name__ == '__main__':
    chars = '@#MBHA&XG893S5n1sri;:-,.  '  # 字符集 颜色越深字符就取大些
    main()  # 把代码都放到main函数里哈

貌似有些大 哈哈不过没事

小龙猫

全部代码

# -*- coding: utf-8 -*-
"""
@author: Yi_Zhou
"""
from PIL import Image

def main():
    img = Image.open(r'.\Demo.png')
    img = img.resize((200,120))
    print(img.mode)
    fp = open('字符画.txt', 'w')
    width, height = img.size
    for i in range(1, height):
        for j in range(1, width):
            R, G, B= img.getpixel((j, i))
            sum = R + G + B
            index = int(sum / 30)
            fp.write(char[index])
        fp.write('\n')
    fp.close()

if __name__ == '__main__':
    char = '@#MBHA&XG893S5n1sri;:-,.  '
    main()

转载请注明:Yi_Zhou_Python:利用Pillow库创建字符画

猜你喜欢

转载自blog.csdn.net/qq_17365065/article/details/80778875