如何用Python批量给图片加水印?

6,660次阅读
没有评论

共计 1533 个字符,预计需要花费 4 分钟才能阅读完成。

特级不保护动物
2023-07-04 09:49:00
浏览数 (1988)

你是否想要给你的图片添加一些个性化的水印,以保护你的版权或者展示你的品牌?如果你有很多图片需要处理,手动添加水印可能会很麻烦和耗时。幸运的是,Python 可以帮助你快速地批量给图片加水印。在这篇文章中,我将介绍一种简单的方法,使用 Python 和 Pillow 库来实现这个功能。

Pillow 是一个流行的 Python 图像处理库,它提供了很多方便的功能,如读取、保存、调整和合成图片。要使用 Pillow,你需要先安装它。你可以使用 pip 命令来安装:

pip install Pillow

安装好 Pillow 后,你就可以开始编写代码了。首先,你需要导入 Pillow 库,并定义一些变量,如水印图片的路径、原始图片的文件夹、输出图片的文件夹等。例如:

from PIL import Image


watermark_path = "watermark.png" # 水印图片的路径
source_folder = "source" # 原始图片的文件夹
output_folder = "output" # 输出图片的文件夹 

接下来,你需要打开水印图片,并将其转换为 RGBA 模式,以保留透明度信息。然后,你可以使用 os 模块来遍历原始图片的文件夹,找到所有的图片文件,并对每一个图片进行处理。例如:

import os


watermark = Image.open(watermark_path).convert("RGBA") # 打开并转换水印图片
watermark_width, watermark_height = watermark.size # 获取水印图片的尺寸


for filename in os.listdir(source_folder): # 遍历原始图片的文件夹
if filename.endswith(".jpg") or filename.endswith(".png"): # 判断是否是图片文件
image_path = os.path.join(source_folder, filename) # 拼接图片文件的路径
image = Image.open(image_path).convert("RGBA") # 打开并转换图片文件
image_width, image_height = image.size # 获取图片文件的尺寸 

在处理每一个图片文件时,你需要先计算水印图片在原始图片上的位置。这里我们假设水印图片放在右下角,并留有一定的边距。你可以根据自己的需求来调整这个位置。然后,你可以使用 Image.alpha_composite() 方法来将水印图片合成到原始图片上,并保存到输出文件夹中。例如:

margin = 10 # 边距
watermark_x = image_width - watermark_width - margin # 水印图片在 x 轴上的位置
watermark_y = image_height - watermark_height - margin # 水印图片在 y 轴上的位置


image.paste(watermark, (watermark_x, watermark_y), watermark) # 将水印图片合成到原始图片上
output_path = os.path.join(output_folder, filename) # 拼接输出文件的路径
image.save(output_path) # 保存输出文件 

这样,你就完成了批量给图片加水印的功能。你可以运行这段代码,并查看输出文件夹中的结果。你会发现每一张原始图片都被添加了一个水印。

这篇文章只是介绍了一种最基本的方法,你可以根据自己的需求来修改和优化代码,例如调整水印图片的大小、透明度、角度等。希望这篇文章对你有所帮助。

原文地址: 如何用 Python 批量给图片加水印?

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-20发表,共计1533字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)