作为一个很拉胯的Linux选手,如果想要把图片进行批量处理的话,按照以前肯定是先下载下来处理好了再上传上去。这样实在是太麻烦了。其实Linux里有一个强大的库ImageMagick用来处理图片。本文就是介绍一下如何利用这个库来实现批量为图片增加水印。
debian或者ubuntu的安装命令:
sudo apt-get update
sudo apt-get install imagemagick
#!/bin/bash
# 设定最小尺寸阈值
MIN_WIDTH=400
MIN_HEIGHT=400
# 图片目录
IMAGE_DIR="/www/wwwroot/i/img76"
# 水印图片
WATERMARK="/www/wwwroot/i/watermarked.png"
# 循环遍历文件夹中的所有图片
for img in "$IMAGE_DIR"/*.png; do
# 获取图片的尺寸
dimensions=$(identify -format "%wx%h" "$img")
width=$(echo $dimensions | cut -dx -f1)
height=$(echo $dimensions | cut -dx -f2)
# 判断图片尺寸是否符合要求
if [ "$width" -ge "$MIN_WIDTH" ] || [ "$height" -ge "$MIN_HEIGHT" ]; then
# 添加水印到图片中心并替换原图片
convert "$img" -gravity center -geometry +0+0 "$WATERMARK" -composite "$img"
fi
done
1、设定最小尺寸阈值:对于太小的图片则不添加水印,||
是或条件,如果想要同时满足长和宽的条件都大于设定值才添加水印,可以把||
改为&&
2、图片目录:要进行添加水印的图片目录,建议在正式添加前先新建一个tempimg文件夹进行效果的测试
3、水印图片:制作的水印图片,可以使用PPT之类的来制作自己的水印图片
4、循环遍历文件夹中的所有图片:"$IMAGE_DIR"/*.png
是指遍历所有的png图片,如果是jpg图片则可以改为"$IMAGE_DIR"/*.jpg
5、添加水印的位置:上面是添加到图片的中心,当然也可以添加到别的位置。可以通过调整 -geometry
参数中的偏移量来实现。-geometry
参数的格式是 +X+Y
,其中 X
和 Y
分别表示水印相对于 -gravity
指定位置的水平和垂直偏移量。
左上角:
convert "$img" -gravity northwest -geometry +10+10 "$WATERMARK" -composite "$img"
右上角:
convert "$img" -gravity northeast -geometry +10+10 "$WATERMARK" -composite "$img"
左下角:
convert "$img" -gravity southwest -geometry +10+10 "$WATERMARK" -composite "$img"
右下角:
convert "$img" -gravity southeast -geometry +10+10 "$WATERMARK" -composite "$img"
.sh
文件(例如 add_watermark_center.sh
)。chmod +x add_watermark_center.sh
命令赋予执行权限。./add_watermark_center.sh
。这里建议大家先创建一个文件夹用来测试,等达到自己想要的效果再批量进行。
最好对原始图片进行一个备份,因为覆盖添加后就找不到原来的图片了。