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_v1.2.sh

#!/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 main(){echo "温馨提示:仅支持常见的图片格式(png、jpg、jpeg、tiff)才可以转换为webp格式,其他文件类型不支持!"# 创建新文件夹new_folder="webp"# 检查文件夹是否存在if [ ! -d "$new_folder" ]; then# 文件夹不存在,创建文件夹mkdir "$new_folder"fi#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}'不支持!"fi
done
}# ---------------执行主函数-------------------
main

2.使用方法:
首先把图片放到与picToWebp_v1.2.sh文件同级目录下。
1).赋予shell脚本文件执行权限

chmod +x picToWebp_v1.2.sh

2).运行shell脚本

./picToWebp_v1.2.sh

测试效果如下:

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455748.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝牙资讯|iOS 18.1 正式版下周推送,AirPods Pro 2耳机将带来助听器功能

苹果公司宣布将在下周发布 iOS 18.1 正式版,同时确认该更新将为 AirPods Pro 2 耳机带来新增“临床级”助听器功能。在启用功能后,用户首先需要使用 AirPods 和 iPhone 进行简短的听力测试,如果检测到听力损失,系统将创建一项“个…

MoCoOp: Mixture of Prompt Learning for Vision Language Models

文章汇总 当前的问题 1)数据集风格变化。 如图1所示,对于一个数据集,单个软提示可能不足以捕获数据中呈现的各种样式。同一数据集中的不同实例可能与不同的提示符兼容。因此,更**自然的做法是使用多个提示来充分表示这些变化**。 2)过拟合…

101. UE5 GAS RPG 实现范围技能奥术爆发表现

在上一篇文章里,我们实现了范围技能的范围指示功能。范围指示是在释放技能前,确认技能的攻击范围,在确认位置后,通过额外按键进行触发技能释放。 在这一篇里,我们将先实现在技能里使用范围指示,并能够播放对…

硬件基础知识补全计划【一】电阻

一、电阻理论 1.1 电流定义 电流:电流的强弱用电流强度来描述,电流强度是单位时间内通过导体某一横截面的电荷量,简称电流,用I表示。1 秒内有 6.241509310^18 个元电荷通过横截面的电流,定义为 1 安 (A)。 电压&…

Redis Search系列 - 第四讲 支持中文

目录 一、支持中文二、自定义中文词典2.1 Redis Search设置FRISOINI参数2.2 friso.ini文件相关配置1)自定义friso UTF-8字典2)修改friso.ini配置文件 三、实测中文分词效果 一、支持中文 Redis Stack 从版本 0.99.0 开始支持中文文档的添加和分词。中文…

MoeCTF 2024 ---Misc方向WP

安全杂项 signin 题目描述: xdsec的小伙伴们和参赛者来上课,碰巧这一天签到系统坏了,作为老师的你,要帮他们 教师代签。 特殊提醒:luo同学今天好像在宿舍打游戏,不想来上课,这是严重的缺勤行为…

PoissonRecon学习笔记

1. Screened Poisson Reconstruction (SPR) 源码:https://github.com/mkazhdan/PoissonRecon However, as noted by several researchers, it suffers from a tendency to over-smooth the data. 泊松重建存在过度平滑的现象。 方法:position and gradi…

【QT】QChart绘制曲线与散点图

功能描述:绘制曲线和散点图,添加图例信息,可以进行缩放、移动,鼠标在曲线上时显示当前坐标点 QChart功能类 继承QGraphicsView 重写鼠标事件函数 protected:void resizeEvent(QResizeEvent *event);void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEv…

C++共同体

共同体是一种数据格式,他能储存不同的数据类型,但是同一时间只能储存其中的一种类型。 语法: union 共同体名 { 成员一的数据类型 成员名一; 成员二的数据类型 成员名二; 成员n的数据类型 成员名n; }

PHP养老院管理系统-计算机设计毕业源码-00115

摘要 随着社会老龄化进程的加速,养老院管理系统在提高养老服务质量和效率方面发挥着越来越重要的作用。本研究旨在设计和实现一个基于PHP的养老院管理系统,以满足养老院的日常管理需求,提升养老服务水平。 本研究首先对养老院管理系统的需求进…

大模型系列——幻觉

在kimi中输入提示词,得到本文脉络: 我想写大模型幻觉技术文章,请对以下标题进行补全和细化: 1、幻觉原因 2、幻觉消除方案 3、幻觉检测方案 4、幻觉评估数据集 背景 研究人员将大模型的幻觉分为事实性幻觉(Factuali…

【状态机DP】力扣2786. 访问数组中的位置使分数最大

给你一个下标从 0 开始的整数数组 nums 和一个正整数 x 。 你 一开始 在数组的位置 0 处&#xff0c;你可以按照下述规则访问数组中的其他位置&#xff1a; 如果你当前在位置 i &#xff0c;那么你可以移动到满足 i < j 的 任意 位置 j 。 对于你访问的位置 i &#xff0c…

系统架构图设计(轻量级架构)

轻量级架构一般包括&#xff1a;表现层、业务逻辑层、持久层、数据库层 表现层架构 MVC 模型&#xff08;Model&#xff09;&#xff1a;应用程序的主体部分&#xff0c;表示业务数据和业务逻辑视图&#xff08;View&#xff09;&#xff1a;用户看到并与之交流的界面控制器&…

Windows 11优化利器:全方位定制你的操作系统

最近&#xff0c;有用户询问如何禁用Windows Defender&#xff0c;这让我想起了一款功能强大的Windows 11设置工具。这款工具不仅包含了禁用Defender的功能&#xff0c;还提供了许多其他实用的系统定制选项。 工具概览 这款名为“Windows11轻松设置”的软件&#xff0c;最近进…

延迟队列实现及其原理详解

1.绪论 本文主要讲解常见的几种延迟队列的实现方式&#xff0c;以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景&#xff0c;主要包含如下场景: 1.比如订单超过15分钟后&#xff0c;关闭未关闭的订单。 2.比如用户可以…

保姆级教程来喽!从下载开始的Luatools~小白必看!

对于刚接触Luatools的新手朋友们&#xff0c;这篇保姆级教程将手把手教你如何从下载开始使用这款强大的调试工具。Luatools适用于合宙的多种4G模组&#xff0c;支持固件获取、打包、调试等多项功能&#xff0c;确保你的开发工作事半功倍。 本文就来讲解一下Luatools的下载和使…

Flask集成sqlalchemy (学习笔记)

文章目录 前言一、安装sqlalchemy二、连接mysql1.创建一个配置数据库信息的文件&#xff08;如上图&#xff09;2.创建sqlalchemy配置文件3.app.py中引入注册4.创建模型对象5.在app.py中进行关联6.执行映射语句&#xff08;迁移命令&#xff09; 总结 前言 本文章讲解的是分模…

Html/Vue浏览器下载并重命名文件

Html/Vue浏览器下载并重命名文件 row是上方图片的数据对象 download(row) {const link document.createElement(a);link.style.display none;// 设置下载地址link.setAttribute(href, row.url);// 设置文件名(这里可以重新设置名字&#xff0c;下载之后的文件就是你重新命名…

王源携手匡威,官宣全球代言人身份,引全网热议

近日&#xff0c;匡威隆重宣布&#xff0c;青年偶像王源荣膺其全球品牌代言人。在官宣消息发布前夕&#xff0c;王源与匡威的合作便已在微博热搜上占据头榜&#xff0c;备受广大网友关注。 随着官宣及产品上线的钟声敲响&#xff0c;王源的粉丝们迅速行动起来&#xff0c;积极支…

Linux运维篇-ansible的使用

目录 ansible简介ansible架构1、连接插件2、核心模块3、自定义模块4、插件5、剧本6、主机清单 ansible的执行过程安装Ansibleansible的使用ansible.cfg文件修改添加主机清单方式一方式二方式三 测试主机清单连接 ansible简介 简单来说&#xff0c;ansible就是一个自动化运维工…