ImageMagick 水印命令生成器
用 ImageMagick 加半透明 logo 水印。角落定位、透明度控制、整图平铺,全部是可直接复制运行的命令。
加水印会逼你学会 ImageMagick 最有用的一个特性:括号子表达式。( … ) 里面的操作只作用于水印,完全不影响底图。
角落半透明 logo
magick input.jpg \
'(' logo.png -alpha set -channel A -evaluate multiply 0.4 +channel ')' \
-gravity southeast -geometry +24+24 -composite output.jpg
从左到右读:
-alpha set确保 logo 有 alpha 通道 —— 如果它本来没有的话。-channel A -evaluate multiply 0.4把这个通道乘以 0.4,得到 40% 不透明度。+channel取消通道限定。漏写这个是经典 bug —— 后面所有操作都会只动 alpha。-gravity southeast -geometry +24+24把它放在距右下角 24 像素处。
关于那对括号
括号是 ImageMagick 的语法,不是 shell 的,所以不能让 shell 吃掉。写成 '(' 和 ')' 在 bash、PowerShell 和 cmd 里都能正常工作 —— 这也是上面的生成器采用这种写法的原因,而不是老教程里那种只适用于 bash 的 \( 转义。
按底图比例缩放水印
固定尺寸的 logo 放在大小不一的图上会很别扭。改成按百分比缩放:
magick input.jpg \
'(' logo.png -resize 20% -alpha set -channel A -evaluate multiply 0.45 +channel ')' \
-gravity southeast -geometry +30+30 -composite output.jpg
整图平铺水印
magick input.jpg \
'(' logo.png -alpha set -channel A -evaluate multiply 0.15 +channel \
-write mpr:tile +delete ')' \
'(' +clone -alpha set -tile mpr:tile -draw 'color 0,0 reset' ')' \
-compose over -composite output.jpg
mpr: 是内存寄存器。水印先处理一次并存进去,然后用它把照片的一个副本整块铺满,最后合成回原图上。透明度要压低 —— 10% 到 20% —— 否则平铺的水印会变成一片看不清的噪点。
只要文字的话
如果你只需要一行版权信息,不用准备 logo 文件,直接看添加文字那一页。那里的技巧是把文字画两遍(先深后浅),这样在明亮天空和暗部阴影上都能看清。
批量加水印
mkdir -p out
for f in *.jpg; do
magick "$f" '(' logo.png -alpha set -channel A -evaluate multiply 0.4 +channel ')' \
-gravity southeast -geometry +24+24 -composite "out/$f"
done
关于水印能做到什么,说句实话
角落水印很容易被裁掉,平铺水印也能被现在的图像修复工具消掉相当一部分。水印对「标明出处」和「打消随手盗用的念头」是有用的,但它不是版权保护。在为此牺牲画面质量之前,值得先想清楚你到底要的是哪一个。