关键词: 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')
代码解释(超简版):
- Image.open() : 打开你的图片。
- img.resize() : 把图片缩小点,不然字符画会超级大。
- img.convert('L') : 把图片变成黑白的。
- chars : 用来组成字符画的字符,你可以自己改!
- 两个 for 循环 : 挨个儿看图片的每个像素,然后根据黑白程度,选择一个字符。
- print :打印生成的字符。
我第一次玩的时候,直接把女朋友的照片转成了字符画,她还以为我偷偷学了什么黑科技!
互动一下:
- 你觉得哪个字符集 (chars) 生成的字符画效果最好?
- 你还想用 Python 实现什么有趣的图像处理效果?评论区告诉我!
- 记得点赞、收藏、转发哦!??
- 进阶玩法 :试着把输出的字符画保存到文本文件(output.txt)里,然后用记事本打开,调整字体大小和行间距,效果更佳!