[教程]使用libwebp批量将图像转换为webp格式

返回我的博客

[教程]使用libwebp批量将图像转换为webp格式

2024/10/25

视频教程

步骤

1、下载libwebp

打开https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html,划到底部找到最新版本,根据操作系统选择合适的版本。

比如Windows选择libwebp-1.4.0-windows-x64.zip,macOS X86选择libwebp-1.4.0-rc1-mac-x86-64.tar.gz,macOS ARM选择libwebp-1.4.0-rc1-mac-arm64.tar.gz……根据你的实际情况来

2、准备脚本

将下载的文件解压,在解压出来的文件夹旁边再创建两个叫“input”和“output”的文件夹,然后>>>

Windows

创建一个名为c.bat的脚本文件,并用记事本写入:

@echo offss
setlocal enabledelayedexpansion

:: 设置输入文件夹路径
set "input_folder_path=input"

:: 设置输出文件夹路径
set "output_folder_path=output"

:: 检查输出文件夹是否存在,如果不存在则创建
if not exist "%output_folder_path%" mkdir "%output_folder_path%"

:: 设置cwebp工具的路径,如果cwebp在环境变量中,则不需要设置
:: set "cwebp_path=C:\path\to\cwebp\cwebp.exe"

:: 遍历输入文件夹中的所有图像文件
for %%i in ("%input_folder_path%\*.jpg", "%input_folder_path%\*.jpeg", "%input_folder_path%\*.png", "%input_folder_path%\*.bmp", "%input_folder_path%\*.gif") do (
    :: 构建输出文件名
    set "output_file=%output_folder_path%\%%~ni.webp"

    :: 使用cwebp转换图像文件
    :: 如果cwebp在环境变量中,直接使用cwebp,否则使用完整的路径
    :: 替换下面的cwebp为%cwebp_path%,如果你设置了cwebp工具的路径
    cwebp -q 80 "%%i" -o "!output_file!"

    :: 输出转换结果
    echo Converted %%i to !output_file!
)

echo All images have been converted.
endlocal

						
macOS/Linux

创建一个名为c.sh的脚本文件,并用纯文本编辑器写入:

#!/bin/bash

input_folder="./input"
output_folder="./output"
cwebp_folder="/Users/yanyige/Desktop/libwebp-1.4.0-rc1-mac-x86-64/bin/"
#cwebp的位置,改成你自己的

# 创建输出文件夹(如果不存在)
mkdir -p "$output_folder"

# 遍历输入文件夹中的图像文件
for img in "$input_folder"/*.{jpg,jpeg,png}; do
    # 检查文件是否存在
    [ -e "$img" ] || continue

    # 获取文件名和扩展名
    filename=$(basename "$img")
    extension="${filename##*.}"
    filename_no_ext="${filename%.*}"

    # 转换为 WebP 格式
    "$cwebp_folder"cwebp "$img" -o "$output_folder/${filename_no_ext}.webp"
done
						

					

保存好,最后,确认libwebp文件夹、input文件夹、output文件夹、c.ps1(sh)脚本在同一文件夹,脚本中的路径替换为实际的

3、使用

将你需要转换的图片放到input文件夹,运行c.bat(sh)

如果你看到终端大量类似这样的提示
Saving file './output/images1.webp'
File:      ./input/images1.jpg
Dimension: 1920 x 1080
Output:    25226 bytes Y-U-V-All-PSNR 48.27 48.33 49.54   48.47 dB
           (0.10 bpp)
block count:  intra4:       1076  (13.19%)
              intra16:      7084  (86.81%)
              skipped:      4414  (54.09%)
bytes used:  header:            120  (0.5%)
             mode-partition:   7875  (31.2%)
 Residuals bytes  |segment 1|segment 2|segment 3|segment 4|  total
    macroblocks:  |       3%|       5%|       3%|      89%|    8160
      quantizer:  |      36 |      36 |      31 |      24 |
   filter level:  |      11 |       9 |      27 |      10 |
						
打开output文件夹也有很多生成的webp文件,那就说明可以了