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 之间的整数。我们可以定义一个字符列表,然后根据像素点转换成...
优化了该文章的源码
原图
字符画
源码
'''
转换一张彩色的图片,很多种颜色,要怎么对应到黑白色的字符画上去?
答案:先转换成灰度图
灰度值:指黑白图像中点的颜色深度,范围一般从 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