Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量添加文本水印
BiliBili视频链接:
Linux shell脚本对常见图片格式转换webp和添加文本水印
在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。
ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。
一、安装ImageMagick(如果尚未安装):
sudo apt-get install imagemagick # 对于基于Debian的系统
验证是否安装成功:
尝试运行ImageMagick提供的一些常用命令,比如:
convert --version
如果convert命令可用,它将返回版本信息。
二、可以编写shell脚本批量为图片添加文本水印
1.shell脚本文件名:
add_text_watermark_v1.2
#!/bin/bash
#脚本功能:把常用的图片格式(png、jpg、jpeg、webp、tiff)批量添加文本水印
#函数功能:使用了*通配符来检查字符串中是否有空格。如果字符串包含空格,contains_space函数将返回真(true),否则返回假(false)。
function contains_space() {
[[ $1 = *\ * ]]
}
#函数功能:把空格全部替换为'_'下划线"
function space2underline(){
local file_name_old=$1
# 使用contains_space函数判断文件名中是否含有空格
if contains_space "$file_name_old"; then
file_name_new="${file_name_old// /_}"
mv "$file_name_old" "$file_name_new";
echo "$file_name_new"
else
echo "$file_name_old"
fi
}
#函数功能:批量为图片添加文本水印
function add_text_watermark(){
# 文本水印字体路径
font_path="../gb-font/国标黑体-GBT2312.ttf"
# 文本水印颜色
text_color="#FF0000" # 红色
# 文本水印大小
text_size=30
# 判断$1参数是否为空,不为空设置用户文本水印
if [ -z $1 ];then
local watermark_text="请添加自己的文本水印"
else
# 文本水印内容
local watermark_text=$1
fi
# 水印位置在图片“左上角”
# local watermark_position="northwest"
# 水印位置在图片“右上角”
# local watermark_position="northeast"
# 水印位置在图片“左下角”
# local watermark_position="southwest"
# 水印位置在图片“右下角”
# local watermark_position="southeast"
# 水印位置在图片“正中心”
# local watermark_position="center"
# 判断$2参数是否为空,不为空,设置用户文本水印位置,为空,则默认文本水印在“左下角”
if [ -z $2 ];then
local watermark_position="southwest"
else
if [ $2 == "1" ];then
local watermark_position="northwest"
elif [ $2 == "2" ];then
local watermark_position="northeast"
elif [ $2 == "3" ];then
local watermark_position="southwest"
elif [ $2 == "4" ];then
local watermark_position="southeast"
elif [ $2 == "5" ];then
local watermark_position="center"
else
local watermark_position="southwest"
fi
fi
# 进入output-images目录
cd "output-images"
# 批量为图片添加文本水印
for file_name in *;do
# echo "文件'$file_name'"
# 使用ImageMagick的convert命令添加文本水印
convert "$file_name" -gravity "$watermark_position" -font "$font_path" -pointsize "$text_size" -fill "$text_color" \
-annotate +6+6 "$watermark_text" "$file_name"
echo "文件'$file_name'已经添加文本水印"
done
}
#函数功能:主函数
function main(){
echo "温馨提示:仅支持常见的图片格式(png、jpg、jpeg、、webp、tiff)才可以添加文本水印,其他文件类型不支持!"
# 文本水印内容
watermark_text=$1
# 水印位置
watermark_position=$2
# 创建新文件夹
new_folder="output-images"
# 检查文件夹是否存在
if [ ! -d "$new_folder" ]; then
# 文件夹不存在,创建文件夹
mkdir "$new_folder"
fi
# 存放待转换的图片文件夹
input_images_folder="input-images"
# 检查文件夹是否存在
if [ ! -d "$input_images_folder" ]; then
# 文件夹不存在,创建文件夹
mkdir "$input_images_folder"
fi
# 进入input-images目录
cd "input-images"
#for file_name in `ls *.png *.jpg *.jpeg *.tiff`;do
for file_name in *;do
#echo "文件'${file_name}'"
if [ "png" == "${file_name##*.}" ];then
file_name=$(space2underline "$file_name")
#echo "$file_name"
cp $file_name `echo ../$new_folder/$file_name`
elif [ "jpg" == "${file_name##*.}" ];then
file_name=$(space2underline "$file_name")
#echo "$file_name"
cp $file_name `echo ../$new_folder/$file_name`
elif [ "jpeg" == "${file_name##*.}" ];then
file_name=$(space2underline "$file_name")
#echo "$file_name"
cp $file_name `echo ../$new_folder/$file_name`
elif [ "webp" == "${file_name##*.}" ];then
file_name=$(space2underline "$file_name")
#echo "$file_name"
cp $file_name `echo ../$new_folder/$file_name`
elif [ "tiff" == "${file_name##*.}" ];then
file_name=$(space2underline "$file_name")
#echo "$file_name"
cp $file_name `echo ../$new_folder/$file_name`
#else
#echo "仅支持常见的图片格式(png、jpg、jpeg、webp、tiff)才可以添加文本水印,其他文件'${file_name}'不支持!"
fi
done
# 进入上一级目录
cd ..
#批量为webp格式图片添加文本水印,设置文本水印位置(1:左上角;2:右上角;3:左下角;4:右下角;5:正中心)
add_text_watermark "$watermark_text" "$watermark_position"
}
# ---------------执行主函数-------------------
main $1 $2
2.使用方法:
首先把图片放到input-images
目录下。
1).赋予shell脚本文件执行权限
chmod +x add_text_watermark_v1.2.sh
2).运行shell脚本,"文本水印内容"替换自己需要添加的水印内容,设置文本水印位置(1:左上角;2:右上角;3:左下角;4:右下角;5:正中心)
./add_text_watermark_v1.2.sh "文本水印内容" "文本水印位置"
测试效果如下:
在生成的output-images
目录中,图片都已添加文本水印
三、该Shell脚本下载地址:
gitee链接:
https://gitee.com/datutu2015/add_text_watermark
蓝奏云链接:
https://wwxc.lanzouo.com/iRdjN2ikfx9i
知识星球链接:
https://t.zsxq.com/KJRYN