找回密码
 立即注册
查看: 105|回复: 0

分享一个avifenc的bat,压缩图片为avif

[复制链接]

236

主题

0

回帖

236

积分

中级会员

积分
236
发表于 2023-7-26 15:27:11 | 显示全部楼层 |阅读模式
avif是新的图片格式,AVIF 格式支持全分辨率的 10 位和 12 位色彩以及 HDR,支持无损压缩广色域 HDR 图层覆盖,允许图像不同图层采用不同压缩率。
avif在小体积图片压缩下优势巨大,缺点是解码比较慢
现在国内两大购物网站和哔哩哔哩都已经使用了avif,Windows 21H2后原生支持avif

jxl挺好的,可惜系统和浏览器都不支持,heic没有好用的编码器,也只能用avif了,压套图节省巨量储存空间

下面的bat可以遍历子文件夹,自动转换成avif图片,不会覆盖原图,如果要改图片质量,直接改-a cq-level=的数字,数字越大输出文件越小越模糊,数字越小输出文件越大越清晰,建议18~36内选一个


@echo off
set time_begin=%time%
set /A time_begin_minute=%time_begin:~3,2%
set /A time_begin_second=%time_begin:~-5,2%
set /A time_begin_millisec=%time_begin:~-2,2%

if exist "%~1"\ cd "%~1"
for /r %%A in (*.png, *.jpg, *.bmp, *.jpeg) do (
  if not exist "%%~dpA%%~nA.avif" (
    avifenc.exe -j all -y 444 --ignore-xmp --ignore-exif --min 0 --max 63 --minalpha 0 --maxalpha 63 -a end-usage=q -a cq-level=20 -a tune=ssim -a color:enable-chroma-deltaq=1 -a color:enable-qm=1 -a color:deltaq-mode=3 "%%A" -o "%%~dpA%%~nA.avif"
  )
)

set time_end=%time%
set /A time_end_minute=%time_end:~3,2%
set /A time_end_second=%time_end:~-5,2%
set /A time_end_millisec=%time_end:~-2,2%
if %time_end_millisec% lss %time_begin_millisec% set /A time_end_millisec+=100&set /A time_end_second-=1
if %time_end_second% lss %time_begin_second% set /A time_end_second+=60&set /A time_end_minute-=1
set /A minute=time_end_minute-time_begin_minute
set /A second=time_end_second-time_begin_second
set /A millisec=time2_millisec-time1_millisec

echo 程序运行开始时间:%time_begin%  结束时间:%time_end%
echo 程序运行时间为%minute%分%second%秒%millisec%毫秒
PAUSE
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|翻墙党

GMT+8, 2026-9-30 04:22 , Processed in 0.060994 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表