[教程]使用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 |