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

88 阅读2分钟

在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"; 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 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`;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
}


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

2.使用方法:

首先把图片放到与picToWebp_v1.2.sh文件同级目录下。

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

chmod +x picToWebp_v1.2.sh

2).运行shell脚本

./picToWebp_v1.2.sh

测试效果如下:

在这里插入图片描述