| 语句 |
解释 |
| from PIL import
Image |
导入Pillow库的Image模块,Pillow库在Python
3中的名字为PIL。这里如果Python环境中未安装Pillow库,则需要先安装。 |
| def main(): |
打开图片。其中Image.open()方法有于打开指定路径的图像文件,并返回一个图像对象。这里将一个医务工作者的照片nxz2-1.jpg放到当前程序文件所在目录。因而不需给出完整路径。 |
| width, height = 300,
130 img = img. resize((width, height)) |
调整图像的尺寸。这里定义的字符画尺寸稍大,主要是为了可将字符画缩小,以便取得更佳的整体图像效果。 |
| img = img.
convert('L') |
转换为灰度图像。图像的convert()方法通过指定的参数转换图像的颜色模式。其中参数’L’表示灰度模式,’RGB’表示真彩色模式。 |
| ascii_chars =
list('MNHQ$OC?7>!:-;. ') def getchar(gray): |
这段代码的主要功能是由灰度值gray转换为相应的字符。 这里是抽象思维的关键。 定义了一个列表ascii_chars,该列表存放了16个表示明暗效果的字符。0~255表示了颜色深度。用n来表示应该应返回的列表ascii_chars中的字符位置,那么,n与灰度值gray的关系如下: gray/256=n/16 即n= gray/16 |
|
将图片每个像素的灰度值转换为一个字符,并存放到变量text中。 这里采用了双层循环结构。将图片先按的从左到右的顺序,即第一层循环for x in range(width),再按从上到下的顺序,即第二层循环for y in range(height),进行获取各个像素坐标,再由图像的getpixel()方法获取相应的灰度值。 图片各个像素坐标的获取是实现自动化的关键步骤,抽象到位,方可解决复杂问题。 这里对函数getchar()的调用,也体现了分解问题的思维方法。首先解决了一个灰度值返回一个字符的问题,然后,再解决逐个的灰度值获取字符的问题。 这两段代码是本例的精华,起到培养学生计算思维的关键。 |
|
|
将字符画保存到一个文本文件中,这里文本文件的名称为nxz2.txt |