【功能】
将jpg图片转换为字母画字符画( python 3.7版本下调试成功)
【特点】
1、图片可默认位置,或者手工输入指定图片名
2、输出字符画高度可以设置,默认为60行
图片转字符画程序.jpg
jpg.jpg
【以下为代码,右上角有复制按钮,可一键复制】
#2020.2.15 调试完成,运行正确!
#调用PIL库,需要自己手动安装Pillow库,具体办法请百度查询“python3安装pillow库”
from PIL import Image
#字符画所用的字母,从左到右越来越淡,最后是一个空格
codelib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. '''
count = len(codelib)
#print(count)
def transform(image_file):
codepic = '' #这一行必须要输入,要不然总是报错
image_file=image_file.convert("L") #将原图版转换为L灰度图像 如果是1就是纯黑纯白的二值图像
for h in range(0,image_file.size[1]): # 0横向像素数
for w in range(0,image_file.size[0]): # 1纵向像素数
gray=image_file.getpixel((w,h)) # 返回当时像素位置的像素值
#print(gray)
codepic = codepic + codelib[int((count*gray)/256)] #映射
codepic = codepic + '\n' #每行输入换行符
return codepic
#原始图片所在位置,如果路径包含\需要输入\\才可
print('''
【图片转字符画程序】 Ver:20200217.01
1、请先将需要转换的图片保存到C盘文件夹下,图片名称为jpg.jpg
2、转换后的文字画,默认会存放到C盘文件夹下的jpg.txt文件
''')
jpgname=str(input('''请在此输入图片所在位置(可直接按回车键,默认位置为c:\\\\jpg.jpg):''') or '''c:\\jpg.jpg''')
image_file = Image.open(jpgname)
#调整图片大小,具体比例根据原始图片大小调节,可以修改其中的宽0.5和高0.25为合适的数值
#image_file = image_file.resize((int(image_file.size[0]*0.5),int(image_file.size[1]*0.25)))
#额外的功能,可以自动计算图片的缩小比例,具体比例为:60/原图高度,即生成的文本共60行,正好可以一屏幕显示。
print('\n原图片像素横向数量(宽度):'+str(image_file.size[0]))
print('原图片像素纵向数量(高度):'+str(image_file.size[1]))
hangshu=int(input("\n请在此输入生成字符画的行数(可直接按回车键,默认为60):") or 60)
bili = float(hangshu/image_file.size[1])
print('\n为防止生成的字符画太宽太高,自动缩小比例约为:'+str(bili))
print('缩小后图片像素横向数量:'+str(int(image_file.size[0]*bili)))
print('缩小后图片像素纵向数量:'+str(int(image_file.size[1]*bili)))
#按比例缩小图片,纵向可以按比例缩小,横向可以缩小一半
image_file = image_file.resize((int(image_file.size[0]*bili*2),int(image_file.size[1]*bili)))
#额外的功能: 保存变灰、变小后的图片
#img2 = image_file.convert('L')
#img2.save('c:\\jpg缩小后.jpg')
#img2.close()
#输出的文本文件名
tmp = open('c:\\jpg.txt','w')
tmp.write(transform(image_file))
tmp.close()
input('\n字母画已经生成完毕,请打开c盘文件夹下的jpg.txt文件即可查看')
网友评论