Python学习30:第三方模块之图像处理模块之【2】

2024-09-09  本文已影响0人  简洁的书写

      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。

图片上绘制文字(ImageDraw)

多个类:从模块中导入多个类时,类与类之间以逗号隔开。其中,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")

待保存对象:一个图片对象img,是待保存的对象。
句点:一个句点,用于连接对象名和方法名。
方法:类中的方法save(),作用是保存图片到指定路径。
路径:示例中为图片的保存路径,以字符串格式传入。再次提醒,Windows系统需要在路径前加 r 防止转义。比如:r"C:\Users\yequ\team2.png"。在本地时需要保存到自己本地真实的路径哦。

       通过一个7行代码的程序,感受到了Python的成熟模块是如何进行实际应用的。第一次应用,你可能还会有这些疑惑:

“这都是你教我的,各种类和函数,用来用去,我自己根本想不到啊”

“这些代码需要背下来吗?我下次怎么还能用起来呢?”

其实,这些问题都不用担心,更重要的是,看得懂代码的用处,并且能根据自己的需要替换。

上一篇 下一篇

猜你喜欢

热点阅读