• 如何在Python中使用Pillow库实现图片批量添加水印功能
  • 发布于 2个月前
  • 384 热度
    0 评论
在现代日常工作中,处理大量图片是一个常见且繁琐的任务。无论是为电商平台批量调整商品图片尺寸,还是为公众号文章加上统一的水印,这些工作如果手动完成,不仅费时费力,还容易出错。幸运的是,Python的Pillow库可以帮助我们轻松实现这些图片处理的自动化。本文将介绍如何使用Pillow库来批量调整图片大小并添加水印。

Pillow库的强大功能
Pillow是Python中一个功能强大的图像处理库,它提供了丰富的功能,如调整大小、裁剪、应用滤镜等。通过Pillow,我们可以编写脚本来自动处理大量图片,大大提高工作效率。

解决的问题
假设你有一个包含大量图片的目录,现在你需要将这些图片统一调整到指定大小,并添加水印。如果手动操作,不仅耗时,而且容易出错。而通过Python的Pillow库,可以编写脚本来自动完成这些任务,极大地提高了工作效率。

如何使用Pillow处理图像
下面是一个简单的例子,展示了如何使用Pillow库来调整图片尺寸并添加水印:
from PIL import Image, ImageDraw, ImageFont
import os

# 图片所在目录
image_dir = '/path/to/image/directory'

# 调整后图片的尺寸
new_size = (800, 600)

# 水印文字和字体
watermark_text = 'Your Watermark'
font = ImageFont.truetype('arial.ttf', 36)

# 遍历目录中的图片
for filename in os.listdir(image_dir):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        # 打开图片
        image_path = os.path.join(image_dir, filename)
        image = Image.open(image_path)
        
        # 调整图片尺寸
        resized_image = image.resize(new_size)
        # 堆代码 duidaima.com
        # 添加水印
        draw = ImageDraw.Draw(resized_image)
        text_width, text_height = draw.textsize(watermark_text, font)
        x = resized_image.width - text_width - 10
        y = resized_image.height - text_height - 10
        draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
        
        # 保存修改后的图片
        new_filename = f"resized_{filename}"
        new_image_path = os.path.join(image_dir, new_filename)
        resized_image.save(new_image_path)
这段代码首先遍历指定目录中的所有图片文件。对于每张图片,首先打开并使用resize()方法调整图片尺寸。接着,使用ImageDraw类在图片的右下角添加水印。最后,将修改后的图片保存为新的文件名。

代码详解
导入库和设置参数:
我们首先导入Pillow库中的Image, ImageDraw和ImageFont模块,并设置图片目录、目标尺寸和水印相关参数。

遍历图片目录:
使用os.listdir遍历指定目录下的所有图片文件。我们只处理.jpg和.png格式的图片。

处理每张图片:
对每张图片,我们首先用Image.open打开图片,然后用resize方法将其调整为指定大小。接着,使用ImageDraw.Draw在图片上添加水印。水印位置设在图片的右下角,并调整文字大小和颜色使其清晰可见。

保存修改后的图片:
最后,将处理过的图片保存到指定目录,并在文件名上添加前缀以区分原图。

注意事项
1.字体文件路径:确保arial.ttf字体文件在代码指定路径中,或者替换为系统中存在的字体文件。
2.文件格式:根据实际需求,调整支持的文件格式,如.jpg、.png等。
3.水印位置和样式:根据实际需求调整水印的位置和样式,以确保水印在不同图片上的显示效果一致。
4.批量处理效率:在处理大量图片时,可以考虑并行处理,以进一步提高效率。
通过掌握这些技巧,我们可以更高效地处理图片任务,确保图片的质量和一致性。如果你也有类似的需求,不妨试试这个强大的工具吧!

让我们一起用Python提升工作效率,做一个聪明的程序员!
用户评论