1. 原理
利用 PIL
库来获取图片并修改大小,
利用灰度值转换公式把每一个像素的 RGB
值转为灰度值
gray = int(0.2126*r+0.7152*g+0.0722*b)
再从字符集里获取对应的字符
asciis = list('M%$@#&WNBRwm8S5A4E3KXFPH69nsxeazgpqbdoctfhkyvuGZYVTUCI2QOD0L7Jjl1ri!^{}[]()/|;:*<>_~-,. ')
最后将字符连接起来并保存就完成了
2. 开始制作
2.1 导入所需的库
在这个工程中,我们需要的第三方库是 PIL
库
但我们不用 pip install PIL
来安装它,而是使用 pip install pillow
pip install pillow
导入库
在导入 PIL
库时,不能用 import pillow
,应使用 import PIL
from PIL import Image as Image
2.2 获取图片路径和选项
inputfile = input('inputfile:')
outputfile = input('outputfile:')
distance = {
'y':' ','':' ','n':''}
distance = distance[input('distance?(Y/n):')]
re = input("resize?:")
字母占用的位置是矩形的,因此生成出来的字符画会被“挤压”。我们可以在字母与字母之间添加空格来防止这种情况的发生。
如果图片太大了,会导致耗费时间过长、乱码等问题。我们应该对图片进行必要的缩放。在询问“resize?”时,可以设置以下几种回答:
回答方式 | 作用 |
---|---|
“”,啥也不输入 | 不缩放 |
“100”,边长 | 输入单个数字时,会按比例缩放为较长边为此长度的矩形 |
“100,200”,宽和高 | 缩放为指定宽高的矩形 |
2.3 图片获取
使用 PIL
的 open
函数打开图片
image = Image.open(inputfile)
注意:这里的 open 函数不要和 python 内置函数 open 混淆
2.4 调整图片大小
获取图片大小
w, h = image.size
获取变量 re
中存储的大小信息,并用函数 split
分割
nwh = re.split(',')
for i in range(len(nwh)):
nwh[i] = int(nwh[i])
调整图片大小
if len(nwh) == 1:
#如果项数为1,表示用户只输入了一个数字。即按比例缩放为较长边为此长度的矩形
ww =