当前位置: 首页 > news >正文

Linux shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式后,并添加文本水印

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp并添加文本水印

在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。

ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。

一、安装ImageMagick(如果尚未安装):
sudo apt-get install imagemagick  # 对于基于Debian的系统

验证是否安装成功:
尝试运行ImageMagick提供的一些常用命令,比如:

convert --version

如果convert命令可用,它将返回版本信息。

二、可以编写shell脚本批量为图片转webp添加文本水印

picToWebp_add_text_watermark_v1.4

#!/bin/bash
#脚本功能:把常用的图片格式(png、jpg、jpeg、tiff)批量转换为webp格式,并添加文本水印#函数功能:使用了*通配符来检查字符串中是否有空格。如果字符串包含空格,contains_space函数将返回真(true),否则返回假(false)。
function contains_space() {[[ $1 = *\ * ]]
}#函数功能:把空格全部替换为'_'下划线"
function space2underline(){local file_name_old=$1# 使用contains_space函数判断文件名中是否含有空格if contains_space "$file_name_old"; thenfile_name_new="${file_name_old// /_}"mv "$file_name_old" "$file_name_new";echo "$file_name_new"elseecho "$file_name_old"fi
}#函数功能:批量为图片添加文本水印
function add_text_watermark(){# 文本水印字体路径font_path="../gb-font/国标黑体-GBT2312.ttf"# 文本水印颜色text_color="#FF0000" # 红色# 文本水印大小text_size=30# 判断$1参数是否为空,不为空设置用户文本水印if [ -z $1 ];thenlocal watermark_text="请添加自己的文本水印"else# 文本水印内容local watermark_text=$1fi# 水印位置在图片“左上角”# local watermark_position="northwest"# 水印位置在图片“右上角”# local watermark_position="northeast"# 水印位置在图片“左下角”# local watermark_position="southwest"# 水印位置在图片“右下角”# local watermark_position="southeast"# 水印位置在图片“正中心”# local watermark_position="center"# 判断$2参数是否为空,不为空,设置用户文本水印位置,为空,则默认文本水印在“左下角”if [ -z $2 ];thenlocal watermark_position="southwest"elseif [ $2 == "1" ];thenlocal watermark_position="northwest"elif [ $2 == "2" ];thenlocal watermark_position="northeast"elif [ $2 == "3" ];thenlocal watermark_position="southwest"elif [ $2 == "4" ];thenlocal watermark_position="southeast"elif [ $2 == "5" ];thenlocal watermark_position="center"elselocal watermark_position="southwest"fifi# 进入output-images目录cd "output-images"#for file_name in `ls *.png *.jpg *.jpeg *.tiff`;dofor file_name in `ls *.webp`;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、tiff)才可以转换为webp格式,其他文件类型不支持!"# 文本水印内容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`;dofor file_name in *;do#echo "文件'${file_name}'"if [ "png" == "${file_name##*.}" ];thenfile_name=$(space2underline "$file_name")#echo "$file_name"(convert $file_name `echo ../$new_folder/${file_name//.png/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elif [ "jpg" == "${file_name##*.}" ];thenfile_name=$(space2underline "$file_name")#echo "$file_name"(convert $file_name `echo ../$new_folder/${file_name//.jpg/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elif [ "jpeg" == "${file_name##*.}" ];thenfile_name=$(space2underline "$file_name")#echo "$file_name"(convert $file_name `echo ../$new_folder/${file_name//.jpeg/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elif [ "tiff" == "${file_name##*.}" ];thenfile_name=$(space2underline "$file_name")#echo "$file_name"(convert $file_name `echo ../$new_folder/${file_name//.tiff/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")#else#echo "仅支持常见的图片格式(png、jpg、jpeg、tiff)才可以转换为webp格式,其他文件'${file_name}'不支持!"fidone# 进入上一级目录cd ..#批量为webp格式图片添加文本水印,设置文本水印位置(1:左上角;2:右上角;3:左下角;4:右下角;5:正中心)add_text_watermark "$watermark_text" "$watermark_position"
}# ---------------执行主函数-------------------
main $1 $2

2.使用方法:
首先把图片放到input-images目录下。

在这里插入图片描述

1).赋予shell脚本文件执行权限

chmod +x picToWebp_add_text_watermark_v1.4.sh

2).运行shell脚本,"文本水印内容"替换自己需要添加的水印内容,设置文本水印位置(1:左上角;2:右上角;3:左下角;4:右下角;5:正中心)

./picToWebp_add_text_watermark_v1.4.sh "文本水印内容" "文本水印位置"

测试效果如下:

在这里插入图片描述

在生成的output-images目录中,图片都转webp并添加文本水印

在这里插入图片描述


三、该Shell脚本下载地址:
gitee链接:
https://gitee.com/datutu2015/pic-to-webp_add_text_watermark蓝奏云链接:
https://wwxc.lanzouo.com/izTRr2ip1hdc知识星球链接:
https://t.zsxq.com/o28wV


http://www.mrgr.cn/news/80936.html

相关文章:

  • Overleaf编译运行时间太长,国内如何支付升级Overleaf高级账户?
  • vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,
  • 解析在OceanBase创建分区的常见问题|OceanBase 用户问题精粹
  • GitLab分支管理策略和最佳实践
  • 01-2 :PyCharm安装配置教程(图文结合-超详细)
  • 路径规划之启发式算法之二十:麻雀搜索算法(Sparrow Search Algorithm,SSA)
  • 【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
  • 游戏开发技能系统常用概念
  • 云计算HCIP-OpenStack02
  • 基础2:值类型与右值引用
  • redo log 和 undo log
  • 实现 WebSocket 接入文心一言
  • Golang学习历程【第二篇 fmt包变量、常量的定义】
  • aosp15 - App冷启动
  • 编译原理复习---基本概念+推导树
  • 云计算HCIP-OpenStack01
  • 滴滴的logicFlow流程图组件
  • 通过smem 定时检测系统内存占用情况
  • uniapp Native.js 调用安卓arr原生service
  • Ubuntu 上传项目到 GitHub
  • windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网
  • 我在广州学 Mysql 系列——有关 Mysql 函数的练习
  • Mysql语法之DQL查询的多行函数
  • Linux文件属性 -- 查看文件命令
  • jvm符号引用和直接引用
  • 操作系统如何管理进程所用的资源