欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python 字符画

程序员文章站 2022-05-30 22:49:24
简单修改了该文章的源码原图字符画源码'''转换一张彩色的图片,很多种颜色,要怎么对应到黑白色的字符画上去?答案:先转换成灰度图灰度值:指黑白图像中点的颜色深度,范围一般从 0 到 255,白色为255,黑色为 0,故黑白图片也称灰度图像我们可以使用灰度值公式将像素的 RGB 值映射到灰度值:gray = 0.2126 * r + 0.7152 * g + 0.0722 * b任何一个 RGB 像素点都可以映射成一个 0~255 之间的整数。我们可以定义一个字符列表,然后根据像素点转换成...

优化了该文章的源码

原图

python 字符画

字符画

python 字符画

源码

'''
转换一张彩色的图片,很多种颜色,要怎么对应到黑白色的字符画上去?
答案:先转换成灰度图
灰度值:指黑白图像中点的颜色深度,范围一般从 0 到 255,白色为255,黑色为 0,故黑白图片也称灰度图像
我们可以使用灰度值公式将像素的 RGB 值映射到灰度值:
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
任何一个 RGB 像素点都可以映射成一个 0~255 之间的整数。
我们可以定义一个字符列表,然后根据像素点转换成的灰度值在 0~255 之间的相对位置,将像素点替换成我们定义的字符列表中相对位置上的字符。
'''
from PIL import Image

# 填充像素的字符
charWord = '''甫新钱 '''
# 一共有多少个字符
charCount = len(charWord)


# 把图片的像素转为字符
def pixelToChar(image):
    # 转为灰度图
    image = image.convert("L")
    # 替代像素的字符
    char = ''
    # 遍历获取像素 然后转换为对应的字符
    for height in range(0, image.size[1]):
        for width in range(0, image.size[0]):
            # 获取灰度值
            gray = image.getpixel((width, height))
            # 根据灰度值转换为对应的字符
            char = char + charWord[int(((charCount) * gray) / 256)]
        # 一行结束  换行
        char = char + '\r\n'
    # 返回对应的字符
    return char


if __name__ == '__main__':
    # 图片路径
    picturePath = u'/Users/apple/Downloads/desktopPicture/qianFuXin3811t012d7ac7af5d39ff86.jpg'
    # 用二进制打开图片
    pictureOpen = open(picturePath, 'rb')
    # 打开图片
    image = Image.open(pictureOpen)
    # 修剪图片  默认把图片缩小0.618倍
    image = image.resize((int(image.size[0] * 0.618), int(image.size[1] * 0.618)))

    # 新建一个文本  写入字符画
    txtPath = '/Users/apple/Downloads/desktopPicture/qian.txt'
    txtWriter = open(txtPath, 'w')
    # 开始把像素转换为字符画  并写入文件
    txtWriter.write(pixelToChar(image))
    # 关闭
    txtWriter.close

本文地址:https://blog.csdn.net/Mr_Qian_Ives/article/details/107366432