首页 > 代码

avif图片格式:批量把jpg/png/gif格式转换成avif

市场上有很多批量转avif格式的软件或在线平台,通通试过一次感觉还是没ImageMagick好用,ImageMagick支持多平台。
Windows 安装方法:(windows版)
下载并安装 ImageMagick:
ImageMagick 下载地址 https://imagemagick.org/script/download.php

在安装时确保勾选 “Install legacy utilities (e.g. convert)”。
检查安装是否成功:
magick -version
ImageMagick 基本用法: (在图片8866.jpg的文件夹内打开cmd终端)
magick 8866.jpg -quality 80 8866.avif

批量转换:(在图片的文件夹内打开cmd终端)
magick mogrify -quality 80 -format avif *.jpg
有人说去掉mogrify更佳:
magick -quality 80 -format avif *.jpg


常用参数:
-quality 80:设置图片质量;
-resize 800×800:调整图片尺寸;
-strip:去除 EXIF 信息;
-background white -flatten:去除透明背景。


批量转换脚本:
Windows 批处理脚本(保存为 convert_to_avif.bat):


@echo off
setlocal enabledelayedexpansion
REM 设置输入和输出目录
set input_dir=.\images\
set output_dir=.\output\
REM 创建输出目录
mkdir !output_dir!
REM 批量转换 JPG -> AVIF
for %%f in (!input_dir!*.jpg) do (
    echo Converting %%f...
    magick "%%f" -quality 80 "!output_dir!%%~nf.avif"
)
echo All files converted!
pause


@echo off
setlocal enabledelayedexpansion
REM 设置输入和输出目录
set input_dir=.\images\
set output_dir=.\output\
REM 创建输出目录(如果不存在)
if not exist "!output_dir!" mkdir "!output_dir!"
REM 检查 ImageMagick 是否已安装
magick -version >nul 2>&1
if errorlevel 1 (
    echo ImageMagick 未正确安装或未加入系统 PATH 中。
    pause
    exit /b
)
REM 批量转换 JPG -> AVIF
for %%f in (!input_dir!*.jpg) do (
    echo 正在转换 %%f ...
    magick "%%f" -strip -resize 1200x1200 -background white -flatten -quality 80 "!output_dir!%%~nf.avif"
    if errorlevel 1 (
        echo 转换 %%f 失败!
    ) else (
        echo 转换 %%f 成功!
    )
)
echo 所有图片已转换完成!
pause

【增强版】
支持子目录递归转换、文件大小判断、处理非 .jpg 格式等
高级脚本:convert_all_jpg_to_avif.bat


@echo off
setlocal enabledelayedexpansion

REM 自定义配置
set "min_width=20"
set "min_height=20"
set "max_size=800x800"
set "quality=80"

REM 当前目录
set "source_dir=%cd%"
set "output_dir=%cd%\converted_avif"

REM 创建输出目录
if not exist "%output_dir%" mkdir "%output_dir%"

REM 遍历所有 .jpg 文件
for /r "%source_dir%" %%f in (*.jpg) do (
    REM 获取相对路径(去掉前缀)
    set "filepath=%%~dpf"
    set "relpath=!filepath:%source_dir%=!"
    set "outfile=%output_dir%!relpath!\%%~nf.avif"

    REM 创建输出子目录
    if not exist "!outfile!\.." mkdir "!outfile!\.."

    echo 正在处理:%%f
    REM 用 magick 获取宽高
    for /f "tokens=1,2 delims=x " %%a in ('magick identify -format "%%w x %%h" "%%f"') do (
        set "imgw=%%a"
        set "imgh=%%b"
    )

    REM 判断尺寸是否超过阈值
    set /a check=0
    if !imgw! GEQ %min_width% if !imgh! GEQ %min_height% set /a check=1

    if !check! EQU 1 (
        magick "%%f" -strip -resize %max_size% -background white -flatten -quality %quality% "!outfile!"
        if errorlevel 1 (
            echo ❌ 转换失败:%%f
        ) else (
            echo ✅ 已保存:!outfile!
        )
    ) else (
        echo ⏩ 跳过尺寸过小的图片:%%f
    )
)

echo.
echo ✅ 所有符合条件的图片已处理完成,AVIF 文件保存在 %output_dir%
pause


  • 网站调用阿里OSS存储大图HEIF或AVIF图片高级压缩
  • HEIF或AVIF图片高级压缩,看下面说明对比调用代码 JPEG原图:3924×2550 | 2.09 MB […]

  • 服务器上mysql数据库很多,某个库把整台服务器拉爆了,如何定位找到罪魁?
  • 服务器上mysql数据库很多,某个数据库把整台服务器拉爆了,如何定位找到罪魁? 先在 MySQL 里把“正在烧 […]

  • 极速打包几百万文件成.zip,比传统方式快几十倍
  • 假如,一个文件夹里面有几十上百万张图片,要把这个文件夹打包成.zip,按传统的windows自带的工具压缩或普 […]

  • Rufus是什么?为什么很多人推荐
  • Rufus 是一个非常流行的Windows 平台下用于创建启动U盘(Bootable USB)的免费工具。官网 […]

  • 批量设置wordpress文章分类,把文章 ID 区间为 1256869 到 1257421批量设置分类为 ID =5
  • 将 cuwen.wp_posts 中 文章 ID 区间为 1256869 到 1257421(含) 的文章批量 […]

  • 同一台服务器里的两个wordpress数据库文章内容叠加复制
  • 问题:同一台服务器里的两个wordpress数据库,我要把名为temp数据库里的wp_posts的所有文章 全 […]