图像的字符画绘制
图片是由不同的像素点组成的规则分布,如果采用字符串代替像素,图像就成为了字符画。
首先定义一个字符集,将这个字符集代替图中的像素点,使得每个字符对应不同的颜色。
不同的字符带来的视觉效果是不一样的,像@#¥之类的字符会色彩感会比较浓密,而_!{}/一类字符空白较多一点,一般表示浅色。
代码实例
待改编图片
from PIL import Image
ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')
def get_char(r, b, g, alpha=256):
if alpha == 0:
return ' '
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = 256 / len(ascii_char)
return ascii_char[int(gray//unit)]
def main():
im = Image.open(r'C:\Users\staring point\Desktop\3.jpg') #文件路径
WIDTH, HEIGHT = 900,500 #文本宽度高度
im = im.resize((WIDTH, HEIGHT))
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'
fo = open(r"C:\Users\staring point\Desktop\pic_char.txt3","w") #保存路径
fo.write(txt)
fo.close()
main()
转换后效果