图片转字符画


使用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)

文章作者: Ron.
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Ron. !
  目录