本文目录导读:

当然可以,批量给图片、PDF或视频添加水印是常见需求,有很多实用脚本和工具可以实现。
下面我为你介绍几种不同场景下的批量加水印脚本方案,你可以根据自己的技术水平和需求选择:
Python 脚本(最灵活、推荐,适合图片)
Python 的 PIL(Pillow)库是处理图片的利器,以下脚本可以遍历一个文件夹,为所有图片添加文字或图片水印。
环境准备:
pip install Pillow
Python 脚本示例:添加文字水印(有透明度)
import os
from PIL import Image, ImageDraw, ImageFont
def add_watermark_text(input_dir, output_dir, text="水印", font_path=None):
"""
给 input_dir 下所有图片添加文字水印,保存到 output_dir
"""
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 设置字体,如果不指定则用默认字体(可能不支持中文)
if font_path is None:
font = ImageFont.load_default() # 默认字体,不支持中文
else:
# 示例:font_path = "C:/Windows/Fonts/simhei.ttf" 或 "/usr/share/fonts/..."
font = ImageFont.truetype(font_path, 36)
# 支持处理的图片格式
supported_ext = ('.png', '.jpg', '.jpeg', '.bmp', '.tiff')
for filename in os.listdir(input_dir):
if filename.lower().endswith(supported_ext):
img_path = os.path.join(input_dir, filename)
img = Image.open(img_path).convert("RGBA") # 转为RGBA支持透明度
# 创建一个与原图同样大小的透明层
txt_layer = Image.new('RGBA', img.size, (255, 255, 255, 0))
draw = ImageDraw.Draw(txt_layer)
# 计算文字位置(右下角)
text_bbox = draw.textbbox((0, 0), text, font=font)
text_width = text_bbox[2] - text_bbox[0]
text_height = text_bbox[3] - text_bbox[1]
width, height = img.size
x = width - text_width - 20 # 右边距20像素
y = height - text_height - 20 # 下边距20像素
# 绘制水印(半透明灰色)
draw.text((x, y), text, font=font, fill=(128, 128, 128, 128)) # RGBA,A=128表示半透明
# 将水印层叠加到原图上
watermarked = Image.alpha_composite(img, txt_layer)
# 保存为与输入相同的格式(如果是JPEG,需要转回RGB)
output_path = os.path.join(output_dir, filename)
if img_path.lower().endswith('.jpg') or img_path.lower().endswith('.jpeg'):
watermarked = watermarked.convert("RGB")
watermarked.save(output_path)
print(f"已处理: {filename}")
# 使用示例
add_watermark_text(
input_dir="./my_photos", # 输入文件夹
output_dir="./my_photos_watermarked", # 输出文件夹
text="© 2024 My Name", # 水印文字
font_path="./simhei.ttf" # 字体文件路径(如果需要中文)
)
Python 脚本示例:添加图片水印(Logo)
from PIL import Image
import os
def add_watermark_logo(input_dir, output_dir, logo_path):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
logo = Image.open(logo_path).convert("RGBA")
# 如果需要调整Logo大小
# logo = logo.resize((100, 100), Image.Resampling.LANCZOS)
for filename in os.listdir(input_dir):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
img = Image.open(os.path.join(input_dir, filename)).convert("RGBA")
# 将Logo放在右下角
width, height = img.size
logo_width, logo_height = logo.size
position = (width - logo_width - 10, height - logo_height - 10)
# 创建一个透明层放置Logo
logo_layer = Image.new('RGBA', img.size, (255, 255, 255, 0))
logo_layer.paste(logo, position, logo) # 使用Logo自身的alpha通道作为遮罩
watermarked = Image.alpha_composite(img, logo_layer)
output_path = os.path.join(output_dir, filename)
if filename.lower().endswith('.jpg') or filename.lower().endswith('.jpeg'):
watermarked = watermarked.convert("RGB")
watermarked.save(output_path)
print(f"已处理: {filename}")
# 使用示例
add_watermark_logo("./photos", "./photos_logo", "./logo.png")
ImageMagick 命令行(极速、适合批量转换)
如果你熟悉命令行,ImageMagick 是目前最强大的图片处理工具之一,一条命令即可搞定批量加水印。
安装:
- Windows:下载安装包
- macOS:
brew install imagemagick - Linux:
sudo apt install imagemagick
命令示例(添加文字水印):
# 遍历所有jpg文件,添加水印 "© 2024 Me" 在右下角
for f in *.jpg; do
convert "$f" -font Arial -pointsize 36 -fill "rgba(128,128,128,0.5)" \
-draw "gravity southeast text 10,10 '© 2024 Me'" "watermarked_$f"
done
命令示例(添加图片水印):
# 将 logo.png 缩放到100x100,放在右下角 convert input.jpg logo.png -geometry 100x100 -gravity southeast -composite output.jpg
批量处理:
# 使用 mogrify 直接修改原文件(或另存)
mogrify -path ./output -font Arial -pointsize 36 -fill "rgba(128,128,128,0.5)" \
-draw "gravity southeast text 10,10 '© 2024'" *.jpg
FFmpeg 命令行(视频水印)
如果是给视频批量加水印,FFmpeg 是标准选择。
安装:
- 类似 ImageMagick
命令示例:
# 为 input.mp4 添加图片水印(logo.png),位置右下角
ffmpeg -i input.mp4 -i logo.png -filter_complex \
"overlay=W-w-10:H-h-10" -codec:a copy output.mp4
批量处理脚本(bash):
for f in *.mp4; do
ffmpeg -i "$f" -i logo.png -filter_complex \
"overlay=W-w-10:H-h-10" -codec:a copy "watermarked_$f"
done
在线工具及专业软件(无需编程)
如果你不想写代码,也有不少现成的工具:
- 专业软件: Adobe Lightroom(批量导出加水印)、Photoshop(动作+批处理)
- 在线工具: Watermark.ws、uMark 等(支持批量上传处理)
- 桌面应用: uMark(免费/收费)、Visual Watermark(简洁易用)
总结建议
- 如果你会 Python:推荐上面的 Python 脚本,灵活性最高,可定制位置、透明度、倾斜等。
- 如果你熟悉命令行:ImageMagick 一行命令即可搞定,速度极快。
- 如果你处理视频:使用 FFmpeg。
- 如果你不想碰代码:用 uMark 或 Visual Watermark 这类桌面软件。
需要哪种场景的脚本,或者需要调整水印的位置、字体、旋转角度,你可以告诉我,我可以帮你进一步完善代码。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播