先上图:
李白哥哥...让后下面贴上代码....
# 1, 导入Image类
from PIL import Image
# 根据像素点的颜色值获取字符的函数
def get_chars(pi):
# 用字符去替换像素点的颜色值
for k in range(0, 8):
if pi < (k + 1) * 32:
return chars[7 - k]
# 保存文件的函数
def save(image_name, data):
f = open(image_name + '.txt', 'w')
for d in data:
print(d, file=f)
f.close()
# 加了这个如果是需要import这个类的话, 会直接调用这段代码...
if __name__ == '__main__':
# 2, 使用Image的对象读取图片
image_name = '/Users/baiya/Desktop/timg.jpeg'
img = Image.open(image_name)
# 3, 将图片转换为灰度图像
img = img.convert('L')
# 4, 获取图片大小,并根据实际需要缩小图片
w, h = img.size
# 如果图片太大, 将高和宽做一个等比例的缩放
if w > 100:
h = int((100/w) * h/2)
w = 100
# 防止图片缩放的时候质量下降
img = img.resize((w, h), Image.ANTIALIAS)
# 5, 将缩小的图片像素点的颜色值转化为字符并存放到列表
# 保存像素字符的列表
data = []
# 替换字符的列表(从左到右颜色是逐渐加深)
chars = [' ', ',', '1', '+', 'n', 'D', '@', 'M']
# 根据图片的宽度和高度便利像素点并取出每个像素点的颜色值
for i in range(0, h):
line = ''
for j in range(0, w):
# 取出像素点的值
pi = img.getpixel((j,i))
# 用字符去替换像素点的颜色值
for k in range(0, 8):
if pi < (k+1) * 32:
line += get_chars(pi)
break
data.append(line)
# 6, 将保存的字符列表写入到文件中
save(image_name, data)
print('转换成功!')
网友评论