python输出str的ascii值

绝了!用 Python 把照片变成 ASCII 码艺术(附代码)

关键词: Python, ASCII 艺术, 字符画, 图像处理, 趣味编程, Python 教程, 代码, 创意编程, 像素艺术

正文:

话说,你有没有想过把自己的照片变成那种酷酷的、由字符组成的“像素画”? 就像黑客帝国里那种代码雨一样的效果,但不是动态的,是静态的图片!

以前我觉得这得是 PS 大神才能搞定的事儿,后来发现,用 Python 竟然可以轻松实现! 简直不要太好玩!

不啰嗦,直接上代码!(Python 的 Pillow 库要先装好哦,pip install pillow 一下就好)

from PIL import Image

def pic_to_ascii(img_path, output_width=):
    # 悄悄告诉你,output_width 可以调字符画的大小,数字越大越清晰,但也越大坨
    img = Image.open(img_path)
    img = img.resize((output_width, int(output_width * img.height / img.width)))
    img = img.convert('L')  # 转成黑白的,方便处理

    # 这些字符就是用来拼字符画的,你可以自己换,看哪个效果更带感!
    chars = "@%#*+=-:. "
    # chars = "$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. " #字符越多,效果会越好
    scale = (len(chars) - 1) / 

    ascii_str = ""
    for row in range(img.height):
        for col in range(img.width):
            gray = img.getpixel((col, row))
            ascii_str += chars[int(gray * scale)]
        ascii_str += '\n'  # 记得换行!

    print(ascii_str)
    # 我一般都是把输出结果保存到一个txt文件里.
    # with open("output.txt", "w") as f:
    #     f.write(ascii_str)

# 把 'your_pic.jpg' 换成你自己的图片路径!
pic_to_ascii('your_pic.jpg')



代码解释(超简版):

  1. Image.open() : 打开你的图片。
  2. img.resize() : 把图片缩小点,不然字符画会超级大。
  3. img.convert('L') : 把图片变成黑白的。
  4. chars : 用来组成字符画的字符,你可以自己改!
  5. 两个 for 循环 : 挨个儿看图片的每个像素,然后根据黑白程度,选择一个字符。
  6. print :打印生成的字符。

我第一次玩的时候,直接把女朋友的照片转成了字符画,她还以为我偷偷学了什么黑科技!

互动一下:

  • 你觉得哪个字符集 (chars) 生成的字符画效果最好?
  • 你还想用 Python 实现什么有趣的图像处理效果?评论区告诉我!
  • 记得点赞、收藏、转发哦!??
  • 进阶玩法 :试着把输出的字符画保存到文本文件(output.txt)里,然后用记事本打开,调整字体大小和行间距,效果更佳!
原文链接:,转发请注明来源!