python 小程序:将图片转成字符图
python 库:pillow
代码程序:
from PIL import Image
import numpy as np
def ascii_art(fp):
im =Image.open(fp,'r')
# 将图片转换成灰度图,只保留亮度
im =im.convert(mode ="L")
# 将图片降采样-一种降低图片像素的技术
x_rate =0.8
y_rate =0.4
# new_size =(int(x*rate)for x in im.size) # 与下面注释代码等价
new_size =(int(im.size[0]*x_rate),int(im.size[1]*y_rate))
im =im.resize(new_size);
# 将图片用数组表示
im_ar =np.array(im)
# 定义显示的字符
symbols =np.array(list("-0a1bcw234 "))
# 将亮度转成所需梯度
min =im_ar.min() # 最低亮度
max =im_ar.max() # 最高亮度
im_ar =(im_ar -min)/(max -min)*(symbols.size-1)
ascii =symbols[im_ar.astype(int)]
rp =r"D:\My Bases\python\zhugeqing\asciivido\result.txt"
f =open(rp ,'w')
for i in range(ascii.shape[0]):
for j in range(ascii.shape[1]):
f.write(str(ascii[i][j]))
f.write('\n')
# main 区
fp =r"D:\My Bases\python\zhugeqing\asciivido\test.jpg"
ascii_art(fp)
print("已成功生成!")
运行示例:
test.jpg :
result.txt :