来源:实验楼
来源地址:实验楼-Python 图片转字符画
思路:将图片R,G,B转换成灰度图,再映射到定义好的字符串上。
背景知识:
①PIL Image
from PIL import Image
image = Image.open('pic1.png')
#返还 Image 对象
width,height = image.size
#返还图片的宽和高
image.getpixel((i,j))
#返还Image的R,G,B,Alpha值
②打开文本与保存
with open('output.txt','w') as f :
f.write(txt)
代码:
from PIL import Image
def get_char(r,g,b,alpha = 256):
charlist = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'. ")
if alpha == 0:
return ' '
gray = int(0.2126*r + 0.7152*g + 0.0722*b)
uint = (256 + 1)/len(charlist)
return charlist[int(gray/uint)]
image = Image.open('pic1.png')
w,h = image.size
txt = ""
for x in range(w):
for y in range(h):
txt += get_char(*image.getpixel((y,x)))
txt += '
'
print(txt)
with open('output.txt','w') as f:
f.write(txt)
函数get_char需要四个参数,
image.getpixel((y,x))
返还一个元组,在前面加 * 号可以将元组中的参数依次传入。
原图: