avif和jpeg格式转换bat脚本(由z.ai提供)

1.使用说明(必读)
第一步:准备环境
    确保你已经在电脑上安装了 FFmpeg,并且已经配置好了环境变量(即在任意文件夹打开命令行输入 ffmpeg 都能运行)。
    如果没有安装,脚本运行时会报错提示。
第二步:创建脚本文件(关键步骤)
    在你的电脑上新建一个文本文档(.txt)。
    将上面的代码完整复制并粘贴进去。
    点击记事本左上角的 “文件” -> “另存为”。
    重点: 在“另存为”窗口底部,“编码” 选项一定要选择 ANSI(否则中文会乱码)。
    文件名命名为 转换工具.bat(后缀名必须是 .bat)。
    保存。
第三步:使用方法
    将你的图片(JPG或AVIF)放在一个文件夹里。
    将刚才制作的 转换工具.bat 复制到同一个文件夹中。
    双击运行 转换工具.bat。
    根据屏幕提示输入数字 1 或 2,按回车键即可开始批量转换。
2. 功能细节说明
    JPG -> AVIF (选项1):
        使用了 libaom-av1 编码器。
        CRF 设为 30(画质与体积平衡较好)。
        转换速度可能较慢,这是正常的。
        如果同时存在 .jpg 和 .jpeg,都会被转换。
    AVIF -> JPG (选项2):
        使用了 -q:v 2 参数,保证转换出来的 JPG 质量很高(接近无损)。
        注意: JPG 格式不支持透明背景。如果你的 AVIF 图片是透明的(比如去底的产品图),转换后背景通常会变成黑色或白色,这是格式限制,无法避免。
    安全机制:
        脚本会自动检测当前目录下是否有对应格式的文件,如果没有会提示“未找到”。
        转换使用 -y 参数,如果存在同名文件会自动覆盖,请确保输出文件名安全。

3 .bat脚本代码

@echo off
REM 这是注释,下一行代码是为了解决中文显示乱码。 chcp
65001 >nul setlocal enabledelayedexpansion title 图片格式批量转换工具 (JPG <-> AVIF) color 1f :: 检查是否安装了 ffmpeg where ffmpeg >nul 2>nul if %errorlevel% neq 0 ( echo [错误] 未检测到 ffmpeg,请确保已安装并将其添加到系统环境变量 PATH 中。 echo 如果不知道如何安装,请搜索 "Windows 安装 ffmpeg 教程"。 pause exit /b ) :menu cls echo ========================================== echo 图片格式批量转换工具 echo ========================================== echo. echo 请选择操作模式: echo. echo [1] JPG/JPEG 转 AVIF (缩小体积,适合网页/存档) echo [2] AVIF 转 JPG (增加兼容性,适合发送/查看) echo [3] 退出程序 echo. echo ========================================== echo. set /p choice=请输入选项 (1/2/3) 并按回车: if "%choice%"=="1" goto jpg2avif if "%choice%"=="2" goto avif2jpg if "%choice%"=="3" goto end echo 输入无效,请重新选择。 timeout /t 2 >nul goto menu :jpg2avif cls echo ========================================== echo 模式 1: JPG/JPEG 转 AVIF echo ========================================== echo. echo 正在扫描当前文件夹下的 .jpg 和 .jpeg 文件... echo. set count=0 for %%i in (*.jpg *.jpeg) do ( set /a count+=1 echo 正在转换 [!count!]: %%i ffmpeg -i "%%i" -c:v libaom-av1 -crf 30 -b:v 0 "%%~ni.avif" -y -loglevel quiet ) if !count! equ 0 ( echo 未找到任何 .jpg 或 .jpeg 文件。 ) else ( echo. echo 转换完成!共处理 !count! 个文件。 echo 输出文件已保存在当前目录。 ) echo. pause goto menu :avif2jpg cls echo ========================================== echo 模式 2: AVIF 转 JPG echo ========================================== echo. echo 正在扫描当前文件夹下的 .avif 文件... echo. set count=0 for %%i in (*.avif) do ( set /a count+=1 echo 正在转换 [!count!]: %%i :: -q:v 2 表示高质量 (范围1-31,数值越小质量越高) ffmpeg -i "%%i" -q:v 2 "%%~ni.jpg" -y -loglevel quiet ) if !count! equ 0 ( echo 未找到任何 .avif 文件。 ) else ( echo. echo 转换完成!共处理 !count! 个文件。 echo 输出文件已保存在当前目录。 echo 注意:如果原 AVIF 图片包含透明背景,转为 JPG 后背景将变黑或不透明。 ) echo. pause goto menu :end exit

 

posted @ 2026-08-17 15:08  POTUS88  阅读(2)  评论(0)    收藏  举报