使用python将一个图片转换成字符画输出在终端
环境
| 名称 | 版本 |
|---|---|
| python | 3.11.1 |
| pip | 24.0 |
| pillow | 9.5.0 |
安装
pip install pillow@9.5.0
代码
from PIL import Image
# 将像素转换为字符
def pixel2char(pixel):
# 灰度值计算公式
gray = int(0.2126 * pixel[0] + 0.7152 * pixel[1] + 0.0722 * pixel[2])
# 字符集,共70个字符,字符从灰度值高到低依次排列
char_list = list("$@B%8&WM#*oahkbdpqwmZO0QCJYXzcvn/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 计算字符索引
char_index = int(gray / 256 * len(char_list))
# 返回字符
return char_list[char_index]
# 将图片转换为字符画
def image2char(image_path, char_width=50):
# 打开图片
image = Image.open(image_path)
# 调整图片大小
width, height = image.size
char_height = int(char_width * height / width / 2)
image = image.resize((char_width, char_height))
# 转换为灰度图
image = image.convert("RGB")
pixels = image.load()
# 生成字符画
char_image = ""
for y in range(char_height):
for x in range(char_width):
char_image += pixel2char(pixels[x, y])
char_image += "\n"
# 返回字符画
return char_image
# 测试
if __name__ == "__main__":
char_image = image2char("./test.png")
print(char_image)