PIL模块处理图片的功能十分丰富,希望大家能通过今天的学习实现举一反三。本节课,我们将通过为图片添加水印为例,来进行学习,最后并将其保存在自己的电脑上。
添加水印,能在一定程度上避免他人滥用我们的图片。因此,当我们在一些公众平台分享图片的时候,建议为自己的图片添加一个水印,来证明这张图片属于自己。
简单来说,水印就是附着在图片上的一段文字。利用PIL模块给图片添加水印,主要解决下面两个问题:
1. 文字以何种字体样式显示;
2. 如何使文字附着在图片上。
加载字体文件(ImageFont)第6行,通过ImageFont的truetype方法读取了字体。
# 从PIL模块中导入类Image和ImageFont
from PIL import Image,ImageFont
# 使用Image类的open()方法打开图片,赋值给变量img
img = Image.open("/Users/yequ/team.png")
# 使用ImageFont类的方法truetype读取字体,赋值给变量font
font = ImageFont.truetype("/Users/yequ/Songti.ttc",size=36)
多个类:从模块中导入多个类时,类与类之间以逗号隔开。其中,ImageFont是PIL中用于加载字体文件的一个类。
类名:类名ImageFont,表明接下来要调用ImageFont类中的方法。
方法:类中的方法truetype(),用于加载字体文件。
路径:示例中为字体路径,以字符串格式传入。如果在本地尝试时,需要传入自己本地真实的字体路径。Windows系统本地可使用路径:r"C:\WINDOWS\Fonts\SIMSUN.TTC"macOS系统本地可以使用路径:"/System/Library/Fonts/Supplemental/Songti.ttc"
字体大小:参数size,用于设置字体的大小。以等号=赋值的方式进行设置,即size=36。
![](https://img.haomeiwen.com/i14777386/cb607cbb9d71012f.png)
图片上绘制文字(ImageDraw)
![](https://img.haomeiwen.com/i14777386/9043e6f92f5e6b58.png)
多个类:从模块中导入多个类时,类与类之间以逗号隔开。其中,ImageDraw是提供了绘图方法的一个类。
类的方法:调用类ImageDraw的Draw方法。作用是创建一个ImageDraw对象。
图片参数:参数是一个图片img。示例中,表示用图片img创建一个临时画布。
赋值变量:一个变量draw,也可以理解为通过类ImageDraw的Draw方法创建的对象。
text方法:一个方法text,用于在临时画布上绘制文字。
文字位置:参数xy,用于设置绘制文字的起始坐标位置。格式为:xy=(横坐标,纵坐标)画布左上角为原点(0,0),向右为x的正方向,向下为y的正方向。
文字内容:参数text,用于添加文字的内容,内容为字符串形式。示例中,表示我们要添加的文字内容为:@编程
填充颜色:参数fill,用于设置文字的填充颜色,参数值为字符串形式。示例中,表示我们要设置文字的填充颜色为白色white。
字体样式:参数font,用于设置绘制文字的字体样式。示例中,表示文字的字体样式为加载好的字体font。
保存图片save( )
导入PIL中的多个类,实现了在图片上添加水印,最后将处理好的图片保存了下来。
前面的代码加入下面一行代码就可保存了
img.save("/Users/yequ/team2.png")
![](https://img.haomeiwen.com/i14777386/2e3ee27f28bd8fbb.png)
待保存对象:一个图片对象img,是待保存的对象。
句点:一个句点,用于连接对象名和方法名。
方法:类中的方法save(),作用是保存图片到指定路径。
路径:示例中为图片的保存路径,以字符串格式传入。再次提醒,Windows系统需要在路径前加 r 防止转义。比如:r"C:\Users\yequ\team2.png"。在本地时需要保存到自己本地真实的路径哦。
通过一个7行代码的程序,感受到了Python的成熟模块是如何进行实际应用的。第一次应用,你可能还会有这些疑惑:
“这都是你教我的,各种类和函数,用来用去,我自己根本想不到啊”
“这些代码需要背下来吗?我下次怎么还能用起来呢?”
其实,这些问题都不用担心,更重要的是,看得懂代码的用处,并且能根据自己的需要替换。
网友评论