当前位置:正能量 » 代码编程 » Linux » 通过shell脚本批量转换所有图片为webp格式

通过shell脚本批量转换所有图片为webp格式

简介

WebP 是一种新型的图片格式,可以为网站上的图片提供卓越的无损和有损压缩。使用 WebP,网站站长和 Web 开发者可以制作更小、更丰富的图片,从而提升网页加载速度。

WebP 无损图片的大小比 PNG 图片小 26% 。WebP 有损图片比采用等效 SSIM 质量索引的同类 JPEG 图片缩小 25-34% 。

无损 WebP 支持透明度(也称为 Alpha 通道),费用仅为 22% 的额外字节。在可以接受有损 RGB 压缩的情况下,有损 WebP 也支持透明度,其提供的文件大小通常比 PNG 小 3 倍。

动画 WebP 图片均支持有损、无损和透明度,与 GIF 和 APNG 相比,这种格式可以减小文件大小。

cwebp 是 Google 官方的开源命令后工具,支持将 PNG、JPEG 等格式的图片转换为 WebP。

安装

在 Mac 下,可以使用 brew install webp 安装。

转换

转换的方式也很简单,使用默认配置:

cwebp  znl_log.png -o znl_log.webp

可用参数

https://developers.google.com/speed/webp/docs/cwebp?hl=zh-cn

批量转换脚本

#!/bin/bash

# 检查参数是否正确
if [ $# -ne 3 ]; then
    echo "Usage: $0 <input_path> <output_path> <quality>"
    exit 1
fi

# 获取参数
input_path=$1
output_path=$2
quality=$3

# 创建输出目录(如果不存在)
mkdir -p $output_path

# 查找所有符合条件的图片文件
find $input_path -type f \( -iname \*.jpg -o -iname \*.jpeg -o -iname \*.png \) -print0 | while IFS= read -r -d '' file
do
    # 构建输出路径
    rel_path=${file#$input_path}
    out_file="$output_path$rel_path"
    out_dir=$(dirname "$out_file")

    # 创建目录结构
    mkdir -p "$out_dir"

    # 转换图片
    cwebp -q $quality -quiet "$file" -o "$out_file"
    echo "Converted $file to $out_file"
done

脚本使用方式

  1. 将上述脚本保存为一个 .sh 文件,比如 convert_images.sh。
  2. 给脚本文件执行权限:chmod +x convert_images.sh。
  3. 运行脚本,指定输入路径、输出路径和质量参数。例如:
./convert_images.sh /path/to/input/images/ /path/to/output/images/ 80

这个脚本会遍历输入路径下的所有图片文件(以.jpg、.jpeg和.png结尾的文件),将它们转换为webp格式,并保持相同的目录结构到输出路径下。

未经允许不得转载:正能量 » 通过shell脚本批量转换所有图片为webp格式

相关文章

评论 (0)

1 + 2 =