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

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添加文本水印

1.shell脚本文件名:

picToWebp_add_text_watermark_v1.3

#!/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"; then
        file_name_new="${file_name_old// /_}"
        mv "$file_name_old" "$file_name_new";
        echo "$file_name_new"
    else
        echo "$file_name_old"
    fi
}


#函数功能:批量为webp格式图片添加文本水印
function add_text_watermark(){
    # 文本水印内容
    local watermark_text=$1
    # 文本水印字体路径
    font_path="../gb-font/国标黑体-GBT2312.ttf"
    # 文本水印颜色
    text_color="#FF0000" # 红色
    # 文本水印大小
    text_size=30

    # 进入"output-images"目录
    cd "output-images"

    #for file_name in `ls *.png *.jpg *.jpeg *.tiff`;do
    for file_name in `ls *.webp`;do
        # echo "文件'${file_name}'"
        # 使用ImageMagick的convert命令添加文本水印
        convert "${file_name}" -gravity southeast -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

    # 创建新文件夹
    new_folder="output-images"
    # 检查文件夹是否存在
    if [ ! -d "$new_folder" ]; then
        # 文件夹不存在,创建文件夹
            mkdir "$new_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"
            (convert $file_name `echo ../$new_folder/${file_name//.png/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")
        elif [ "jpg" == "${file_name##*.}" ];then
            file_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##*.}" ];then
            file_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##*.}" ];then
            file_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}'不支持!"
        fi
    done

    # 进入上一级目录
    cd ..

    #批量为webp格式图片添加文本水印
    add_text_watermark "$watermark_text"
}


# ---------------执行主函数-------------------
main $1

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

在这里插入图片描述

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

chmod +x picToWebp_add_text_watermark_v1.3.sh

2).运行shell脚本,"文本水印内容"替换自己需要添加的水印内容

./picToWebp_add_text_watermark_v1.3.sh "文本水印内容"

测试效果如下:

在这里插入图片描述

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

在这里插入图片描述

3.该Shell脚本下载地址:

蓝奏云链接:
https://wwxc.lanzouo.com/iwhcc2ikfxcb

知识星球链接:
https://t.zsxq.com/o28wV


http://www.kler.cn/a/444705.html

相关文章:

  • 多模态抽取图片信息的 Prompt
  • webpack处理图片资源
  • QT笔记- QClipboard剪切板对QByteArray数据的复制与粘贴
  • 感知机与逻辑回归的异同点
  • Ubuntu软件更新及删除
  • 了解 SpringMVC 请求流程
  • 通过阿里云 Milvus 和 LangChain 快速构建 LLM 问答系统
  • ValueError: Invalid pattern: ‘**‘ can only be an entire path component
  • postman设置cookie
  • 学生信息管理系统
  • 基于 JAVA 的 SSM 网络直播带货查询系统:JSP 主导的设计与实现架构
  • 3164: 查找“支撑数”
  • 远程控制软件新趋势
  • 二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
  • (四)Spring Cloud Alibaba 2023.x:高效构建 Gateway 网关服务
  • 数据特性库 前言
  • 串口通信控制LED灯
  • 车辆重识别代码笔记12.20
  • 项目搭建+删除(单/批)
  • 【机器学习】机器学习的基本分类-强化学习-REINFORCE 算法
  • 带渐变边框的图(uniapp版本+uview)
  • 使用idea进行maven项目打war包
  • 【Linux】UDP通信
  • AOI外观缺陷检测机
  • unordered_map和unorderset_set的使用
  • Dot Foods EDI 需求分析及对接流程