背景
偶尔看到一些视频,他们把图片转字符画,平常也没有去关注,今天来捣鼓一下。
研究了一下还超级简单的,都是调用别人写好的框架。
网上也有很多教学。
代码实现
from PIL import Image
# 表示字符颜色,由深到浅(可自定义)
ascii_chars = " .,:-=+o*Oθ%@■▇"
# 像素点 转 字符
# 根据像素点颜色 选取 字符
def pixel_to_char(pixel):
gray = int(0.2126 * pixel[0] + 0.7152 * pixel[1] + 0.0722 * pixel[2])
unit = 256 / len(ascii_chars)
return ascii_chars[int(gray / unit)]
# 图片 转 字符画
# 参数:
# image_path:图片路径,
# output_width : 图片大小
def image_to_ascii(image_path, output_width=100):
img = Image.open(image_path)
width, height = img.size
output_height = int(output_width * height / width * 0.55)
img = img.resize((output_width, output_height))
ascii_img = ''
for i in range(output_height):
for j in range(output_width):
pixel = img.getpixel((j, i))
ascii_img += pixel_to_char(pixel)
ascii_img += '\n'
return ascii_img
# 调用
print(image_to_ascii(你图片的路径, 180))
效果