图片加水印的命令行工具

图片加水印的命令行工具

Posted by vxiaozhi on March 13, 2025

在 Linux 或 macOS 系统中,可以通过命令行工具(如 ImageMagickffmpeg)快速为图片添加水印。以下是几种常用方法:


方法 1:使用 ImageMagick(推荐)

1. 安装 ImageMagick

1
2
3
4
5
# Linux (Debian/Ubuntu)
sudo apt-get install imagemagick

# macOS
brew install imagemagick

2. 添加文字水印

1
2
convert input.jpg -font Arial -pointsize 40 -fill "rgba(255,255,255,0.5)" \
-gravity southeast -annotate +20+10 "Your Watermark" output.jpg

参数说明: • -font Arial:指定字体(使用 convert -list font 查看可用字体)。 • -pointsize 40:文字大小。 • -fill "rgba(255,255,255,0.5)":文字颜色和透明度(0=全透明,1=不透明)。 • -gravity southeast:水印位置(southeast=右下角,其他选项:north, center 等)。 • -annotate +20+10:距离边缘的偏移量(水平+20,垂直+10)。

注意,如果 Ubuntu中,可能存在找不到Arial字体的情况, 通过如下命令安装字体:

1
2
3
4
5
6
7
8
9
#  安装字体包
sudo apt install ttf-mscorefonts-installer

# 刷新字体缓存

sudo fc-cache -f -v

# 验证安装
fc-list | grep -i "Arial"

3. 添加图片水印

1
convert input.jpg watermark.png -gravity center -geometry +0+0 -composite output.jpg

参数说明: • watermark.png:水印图片(支持 PNG 透明背景)。 • -geometry +0+0:水印位置偏移量(+0+0=居中,+20-10=右20上10)。 • -composite:合并水印和原图。

可以用如下命令生成一张带文字的白色背景图片:

1
convert -size 200x20 xc:white -font Arial -fill "rgba(255,0,255,0.5)" -gravity center -pointsize 20 -annotate 0 "小智晖的AI单词本:word.vxiaozhi.com" output.png

4. 批量添加水印

1
2
3
4
for file in *.jpg; do
  convert "$file" -font Arial -pointsize 30 -fill "rgba(0,0,0,0.3)" \
  -gravity southeast -annotate +20+10 "Private" "watermarked_${file}"
done

方法 2:使用 ffmpeg

1. 安装 ffmpeg

1
2
3
4
5
# Linux
sudo apt-get install ffmpeg

# macOS
brew install ffmpeg

2. 添加文字水印

1
ffmpeg -i input.jpg -vf "drawtext=text='Your Watermark':x=10:y=H-th-10:fontsize=24:fontcolor=white@0.5:fontfile=/path/to/font.ttf" -q:v 1 output.jpg

参数说明: • x=10:y=H-th-10:水印位置(左下角,距离左10,下10)。 • fontcolor=white@0.5:颜色和透明度。 • fontfile:指定字体文件路径(必需)。

3. 添加图片水印

1
ffmpeg -i input.jpg -i watermark.png -filter_complex "overlay=10:main_h-overlay_h-10" output.jpg

overlay=10:main_h-overlay_h-10:水印位置(左下角,距离左10,下10)。


方法 3:使用 macOS 自带的 sipstextutil(仅文字水印)

1
2
3
4
5
# 生成透明背景的水印文字图片
textutil -convert png -font Arial -fontsize 40 -strokeColor "rgba(255,255,255,0.5)" -text "Watermark" -output watermark.png

# 合并水印和原图
sips input.jpg --overlay watermark.png --out output.jpg

常见问题 & 小技巧

  1. 水印位置计算: • 使用 -gravity 定位(如 southeast=右下角),或通过 -geometry 手动调整偏移量。 • 示例:-geometry +20-10 表示右移20像素,上移10像素。

  2. 透明度控制: • ImageMagick 使用 rgba(255,255,255,0.5)(最后一个值0-1为透明度)。 • ffmpeg 使用 white@0.5(0.5=半透明)。

  3. 批量处理: • 使用 find 命令处理子目录文件:
    1
    
      find . -name "*.jpg" -exec convert {} -font Arial -annotate ... {}.watermarked.jpg \;
    
  4. 优化水印清晰度: • 若水印模糊,尝试提高水印图片分辨率或使用矢量格式(如 SVG)。