Python自动化水印处理

127 阅读2分钟

基础知识:Pillow库入门

Pillow是Python中最流行的图像处理库之一,它是PIL(Python Imaging Library)的友好活跃分支,提供了强大的图像处理功能。要开始使用Pillow,首先确保你已经安装了这个库。可以通过以下命令安装:

pip install Pillow

实战演练:批量添加水印

假设你有一大批需要添加水印的图像,手动处理显然不是最优解。让我们看看如何编写一个Python脚本来自动化这一过程:

from PIL import Image, ImageDraw, ImageFont
def add_watermark(image_path, watermark_text, output_path):
    base = Image.open(image_path).convert("RGBA")
    txt = Image.new("RGBA", base.size, (255,255,255,0))
    fnt = ImageFont.truetype("arial.ttf", 30)
    d = ImageDraw.Draw(txt)
    # 计算水印文字的位置
    textwidth, textheight = d.textsize(watermark_text, fnotallow=fnt)
    x = (base.width - textwidth) / 2
    y = (base.height - textheight) / 2
    # 添加水印
    d.text((x, y), watermark_text, fnotallow=fnt, fill=(255,255,255,128))
    out = Image.alpha_composite(base, txt)
    out.convert("RGB").save(output_path)
# 批量处理
for i in range(1, 11):  # 假设我们要处理从1到10编号的图像
    image_path = f"images/image_{i}.jpg"
    output_path = f"watermarked/watermarked_{i}.jpg"
    add_watermark(image_path, "Your Copyright ©", output_path)
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.

进阶技巧:动态水印与自动化处理

动态水印

动态水印是指根据原图的特征自动调整水印的位置、大小、透明度等属性,使其更加自然地融入到图像中,避免对图像主体造成干扰。这通常涉及到图像分析和机器学习算法,例如使用深度学习模型预测最佳水印位置。

自动化水印处理

对于大量图片的水印添加或去除,可以利用脚本和批处理操作来自动化这一过程。比如,你可以编写一个脚本来监控特定文件夹,一旦有新图片加入,就自动为其添加水印。

import os
import time
def auto_watermark(images_dir, watermark_path, output_dir):
    while True:
        for filename in os.listdir(images_dir):
            if filename.endswith('.jpg') and not os.path.exists(os.path.join(output_dir, filename)):
                add_image_watermark(os.path.join(images_dir, filename), watermark_path, os.path.join(output_dir, filename))
        time.sleep(60)  # 每分钟检查一次
auto_watermark('incoming_images', 'logo.png', 'watermarked_images')