目录
环境要求和依赖
- 操作系统:适用于任何支持Python的操作系统,包括Windows、macOS和Linux。
- Python版本:推荐使用Python 3.6或更高版本。
- 外部库:
- Pillow:用于图像处理的库。安装命令:
pip install Pillow
- Pillow:用于图像处理的库。安装命令:
使用说明
- 确保Python环境已安装,并且Pillow库也已安装。
- 将脚本保存为
.py
文件,例如add_image_watermark.py
。 - 准备水印图片,并确定好要添加水印的图片所在的目录。
- 在命令行中运行脚本,并按提示输入所需信息。
- 检查目录下的图片,确认水印已按预期添加。
概述
本文介绍的是一个Python脚本,用于为PNG格式的图片批量添加图片水印。这个工具允许用户自定义水印图片的位置和透明度,非常适合需要在多张图片上迅速应用统一视觉标识的场景,如品牌推广、版权声明等。
逐行代码描述
导入必需的模块:
from PIL import Image
import os
使用PIL
库进行图像处理,os
模块用来处理文件和目录操作。
获取用户输入:
path = input('请输入要添加水印的图片所在路径:')
imgpath = input('请输入要作为水印图片的路径:')
position_flag = int(input('请输入水印位置(0:左上角,1:左下角,2:右上角,3:右下角,4:居中):'))
alpha_value = int(input('请输入水印透明度(范围在1——10之间):'))
通过命令行输入获取水印的图片路径、位置和透明度。
定义图片水印函数:
def img_mark(img):
...
定义一个函数img_mark
,接受一个图片路径作为参数,用来处理并添加水印。
打开图片并转换格式:
im = Image.open(img)
mark = Image.open(imgpath)
rgba_im = im.convert('RGBA')
rgba_mark = mark.convert('RGBA')
打开原始图片和水印图片,然后转换它们到RGBA
格式以支持透明度处理。
计算并调整水印图片的大小:
img_width, img_height = rgba_im.size
nimg_width, nimg_height = rgba_mark.size
scale = 10
mark_scale = max(img_width / (scale * nimg_width), img_height / (scale * nimg_height))
new_size = (int(nimg_width * mark_scale), int(nimg_height * mark_scale))
rgba_mark = rgba_mark.resize(new_size, Image.ANTIALIAS)
根据原始图片大小来缩放水印图片,保持其比例合适,不覆盖过多的主要内容。
设置水印位置:
positions = {...}
position = positions[position_flag]
通过字典预定义水印的位置,根据用户输入选择具体的位置坐标。
应用水印透明度并合成:
rgba_mark_alpha = rgba_mark.convert("L").point(lambda x: x // alpha_value)
rgba_mark.putalpha(rgba_mark_alpha)
rgba_im.paste(rgba_mark, position, rgba_mark_alpha)
rgba_im.save(img, 'PNG')
设置水印透明度,将处理后的水印图片粘贴到原始图片上,并保存。
批量处理目录中的PNG文件:
try:
files = os.listdir(path)
for file in files:
...
except Exception as e:
print('错误:', e)
遍历指定目录下的所有文件,对每个PNG文件执行水印添加操作,并处理可能出现的异常。