Avif使用说明
avif —— 相片瘦身与拍摄时刻修复
本文链接:https://www.cnblogs.com/fitmap/p/23187392
avif是一个命令行工具,做两件事:
① 把照片的"最后修改时刻"恢复成拍摄时刻;② 把照片压成.avif格式省空间。
全程不联网、不删原相片。
默认把当前文件夹(含所有子文件夹)都处理一遍;也可以只处理你指定的那几张、那几个文件夹(见 §4)。
1. 解决什么问题
- 节假日出游留下大量相片;手机、相机分辨率越来越高,导出的相片越来越大,几万张就能占掉 1TB;
- 存储产品在人工智能需求驱动下价格暴涨;
- 相片经过复制、导出、同步,"最后修改时刻"变成"操作时刻",照片在"按日期排序"的相册里会被打乱,看不出实际拍摄日期。
avif 一次解决这两件事:先把最后修改时刻改回拍摄时刻,再把相片压成体积小得多的 AVIF 格式——
同样的画质,体积通常只有原来的 1/20 到 1/2。
- 不动原文件,只新增一个同名
.Avif文件; - 已经转换过的目录再运行一次也不会重复转换;
- 可整可零:不带参数处理整个文件夹,带上文件名/目录名就只处理你指定的那些(见 §4.2)。
2. 下载地址
| 包 | 链接 |
|---|---|
安装包 avif_exe.7z |
https://share.weiyun.com/BF3xlGo3 密码:thy75u |
源程序(非程序员可不下载) avif_src.7z |
https://share.weiyun.com/4qw3vVmc 密码:n5s6mi |
注:安装包打开后是安装程序 avifsetup.exe,双击它即可安装(见 §3)。
avif.exe 不依赖任何外部动态链接库(只使用 Windows 自带的系统 DLL)。
3. 安装方法
- 打开
avif_exe.7z,双击运行avifsetup.exe; avif.exe程序会自动安装到C:\Program Files\avif,并把这个目录加进你的 Path 环境变量。
环境要求:64 位 Windows(Windows 10 / 11 均可)。
注:若有其它目录下的 avif.exe 请自行删除。
4. 使用方法
avif 有两种用法:不带东西就处理整个文件夹;带上东西就只处理你指定的那些照片。
4.1 用法一:整个文件夹(最常用)
:: 1) 打开要处理的那个文件夹,在地址栏敲 cmd 回车(即"在这个目录找开命令行窗口")
:: 2) 在命令行窗口输入下列命令并回车:
avif
它会递归处理当前目录及其所有子目录,每个文件夹单独汇总。
4.2 用法二:只处理指定的照片 / 指定的子目录
在 avif 后面跟上"要处理什么"就行,可以写多个(用空格隔开):
avif IMG_0001.Jpg :: 只处理这一张
avif IMG_0001.Jpg IMG_0002.Jpg :: 只处理这两张
avif *.jpg :: 当前文件夹里所有 jpg
avif sub\*.png :: sub 文件夹里所有 png
avif "D:\我的 照片\*.jpg" :: 别的盘上的文件夹(路径含空格时用双引号)
avif D:\我的照片 :: 整个文件夹(含它下面所有子目录)
avif *.jpg sub\*.png :: 混着写也行
只有三条规则要记住:
| 规则 | 说明 |
|---|---|
* 只管一层 |
*.jpg 只匹配当前这一层的 jpg,不会钻进子目录。子目录里的要另外写(sub\*.jpg),或者写成 *\*.jpg(每个子目录各匹配一层) |
| 写文件夹名 = 整个文件夹 | 直接写 D:\我的照片 或 sub,会递归处理它下面所有子目录 —— 和"用法一"完全一样 |
.Avif 跟着原图走 |
产物一律生成在原图所在的那个文件夹里,两种用法没有区别 |
⚠ 只写"要处理的原图",别把产物
.Avif也写进去。
写在后面的文件名,程序会在动手转换之前先把它们逐个核对一遍;那一刻本次要生成的
.Avif还不存在,于是会多出一句找不到:xxx.Avif(退出码 1)—— 转换本身是照常完成的,
第二次再跑也没有这句提示,但没必要这么写。
正例:avif IMG_0001.Dng反例:avif IMG_0001.Dng IMG_0001.Avif
处理内容也完全一致:先修最后修改时刻、再压缩;已经转换过的用 <已有> 跳过,不会重复转换。
两点提醒
avif没有--help之类的选项开关。写在后面的东西一律当成"要处理的文件",
写错了它会明确告诉你"找不到",不会猜你的意思。- 路径里有空格时要用双引号包起来:
avif "D:\我的 照片\*.jpg"。
路径里没有空格时加不加引号都一样。
Q:双击
avif.exe好像没反应?
它处理的是命令行"当前目录",而且做完就退出,双击时窗口一闪而过看不到结果。
请按上面的方法在命令窗口里运行它。
5. 支持的照片格式(12 种)
| 类别 | 扩展名 | 说明 |
|---|---|---|
| 常见照片 | .jpg .jpeg .png .gif .bmp |
|
| 专业/无损 | .tif .tiff |
含 LZW、ZIP(Deflate)压缩的 TIFF |
| 网络图片 | .webp |
|
| 苹果手机 | .heic .heif |
iPhone 默认拍照格式 |
| 专业 RAW | .dng |
手机(苹果/安卓/鸿蒙)/相机的 RAW |
| 已转换 | .avif |
不重复转换,只修正它的"最后修改时刻" |
大小写都认(.JPG、.Dng 一样处理)。视频不在处理范围内,不在支持列表里的格式一律跳过。
6. 压缩效果(实测数据)
用 16 张 4096×3072 的手机照片(合计 35.6 MB)实测:
| 结果 | |
|---|---|
| 原始总量 | 35,645,963 字节(约 35.6 MB) |
| 转成 AVIF 后 | 3,643,532 字节(约 3.6 MB) |
| 压缩率 | 10.2% —— 省下约 89.8% 的空间 |
RAW(DNG)也能直接转。实测:
| 源文件 | 产物 |
|---|---|
| 24 MB 的 DNG(4000×3000,画面较简单) | 86 KB |
| 141 MB 的 DNG(11904×5952) | 464 KB |
RAW 文件本身保存的是"传感器原始数据",压缩率看起来特别夸张是正常的;
普通照片按 §6 的比例(约 1/10)估算更实际。⚠ 实际压缩率随相片内容而异。手机/相机相片通常在 1/2 ~ 1/20 之间;
已经压过很多次的图(比如微信转发过的)省得少一些。
速度快:12 兆像素的照片约 2~3 秒/张;上面那个 70 兆像素的 DNG 约 15 秒。
它使用的是高质量编码设置——慢一点,换来更小的体积和更好的画质。
已经转换完的目录再跑一遍几乎不花时间(约 3 毫秒/文件),所以可以放心反复运行。
7. 画质影响
日常照片:肉眼看不出差别。
- 客观相似度(SSIM,满分 1.000)为 0.975;
- 在手机、电脑屏幕、电视上正常浏览和投屏,与原始相片看不出区别;
- 只有把两张图放大到 100% 并排逐像素比对,才能在极细的纹理处找到差别。
需要注意的三点:
- 截图、图表、界面图、彩色文字这类"色块锐利"的图,压缩后可能有轻微色彩边缘
。照片不受影响。 - 转换是有损的。不适合还要在这张图上做大幅后期(重度调色、大比例裁剪放大)的
专业用途——那种情况请保留原始文件。 - 如果你要长期保存原件,请保留源文件(本工具本来就只新增
.Avif、不删原图)。
真正重要的照片建议另存一份原始文件到别处。
8. 输出怎么读
★★★ 深度=0 .
1 2026-10-03 08:37:34 IMG_0001.Jpg 4873684 => .Avif 1053722 21.62% 2.39s
2 2026-10-03 08:37:34 IMG_0002.Jpg 4873684 => .Avif 1053722 21.62% - <已有>
合计 2 个: 转换 1, 跳过(已有) 1, 已是 .Avif 0
时刻: 已修 2, 一致 0, 无 0
原 9747368 => 现 2107444 字节, 总压缩率 21.62%, 用时 2.4 秒
用时: 合计 2.4 秒(读取元数据 0.2 秒, 转换 2.2 秒)
| 列 | 含义 |
|---|---|
★★★ 深度=0 . |
正在处理哪一层目录(. 是当前目录,./sub 是子目录) |
| 时刻 | 这张照片的拍摄时刻(也就是修好之后的"最后修改时刻") |
| 源文件名 / 原大小 | 原文件 |
.Avif / 宿大小 |
转换产物及其体积 |
| 压缩率 | 产物 ÷ 原文件 |
最后的 2.39s |
处理这个文件花了多少秒;显示 - 表示这个文件没有转换 |
<已有> |
之前已经转换过了,本次跳过(不是错误) |
★★★行里的目录名:在当前文件夹里面的用相对写法(.、./sub);
若是用 §4.2 指定了别的盘/别的路径,就直接显示完整路径(D:\我的照片),
方便你一眼看出这次动的是哪儿。
时刻列的两种特殊显示:
======—— 照片最后修改时刻本来就是对的不需要改;******—— 这张照片里没有可用于判断的拍摄时刻,于是原样保留它的"最后修改时刻"。
拍摄时刻从哪来:优先用相片自带的拍摄时刻(EXIF,手机相片都有);
没有 EXIF 时(微信发送会删掉 EXIF),从文件名里的日期时刻串推断
(如 IMG_20260927_123415.jpg);两者都没有才显示 ******。
9. 退出码
| 退出码 | 含义 | 该怎么办 |
|---|---|---|
| 0 | 全部成功 | — |
| 1 | 至少有一个文件出错(读不了、写不了),或者你给的文件/文件夹根本不存在 | 看输出末尾的 错误 列表,逐条核对 |
| 2 | 启动失败(参数写成了空 / 程序自身初始化失败) | 检查命令行参数 |
「某个通配符一个文件都没匹配到」(例如目录里没有 png 却写了
avif *.png)
不算错误:它会打印一行〓 无匹配:*.png提示你,但退出码仍是 0,
所以放在批处理里连写几种格式也不会动不动就"失败"。
而路径写错(比如avif D:\没有这个目录)是错误,退出码 1 —— 这种情况必须让你知道。另有一类会得到 1 的写法:把本次将要生成的
.Avif也写进命令行(见 §4.2 的提醒)。
转换照样完成、文件照样能看,但那句"找不到"会让退出码变成 1。
10. 想省主机空间?把老照片挪到 U 盘 / 移动硬盘
主机/系统盘空间紧张时,这是最划算的做法——先转换、再转移、观察一阵再清理:
- 先转换:在照片目录运行一次
avif,得到体积只有约 1/10 的.Avif。 - 再核实:随便抽几张
.Avif打开看看,确认画质与最后修改时刻都正常。 - 再转移:把
.Avif与原始.Jpg一起拷到 U 盘 / 移动硬盘
(源文件是你唯一的"无损底片",不要只留.Avif)——是转移,不是删除,万一后悔还有退路。 - 观察一段时间(比如一两个月):用起来没问题,再考虑删除主机上的原图;
主机上保留.Avif即可继续正常浏览。 - 重要照片建议两份介质 + 一处云端(U 盘会丢、会坏,这是常态)。
11. 怎么查看 .Avif 文件
- Windows 10/11:可以用Edge浏览器直接打开;
安装 "AV1 Video Extension"(Microsoft Store 里搜这个名字,免费);
不装的话资源管理器可能显示不出缩略图、双击打不开;照片应用也无法浏览。 - 也可以用支持 AVIF 的看图软件(如 ImageMagick、XnView、IrfanView + 插件、新版 Photoshop 等);
- 关于 AVIF 格式本身的更多介绍,参见
[AVIF简介] https://www.cnblogs.com/fitmap/p/15861245。
12. 卸载
- 打开 设置 → 应用 → 已安装的应用,找到 avif,点卸载;或
- 直接运行
C:\Program Files\avif\avifuninst.exe(需要管理员确认)。
卸载会:从 Path 中移除安装目录、删除注册表项、删掉安装目录与自身。
你转换出来的照片完全不受影响。
13. 常见问题
Q:转出来的 .Avif 会比原图还大?
一般不会。但已经高度压缩过的图、或者极小的图,可能压缩率很差甚至变大
(例如一张 3 KB 的缩略图)。这是格式本身的特性,不是故障。
Q:运行报"不是内部或外部命令"?
avif 所在目录不在 Path 里,或安装后还没开过新的命令行窗口。见 §3。
Q:想批量处理很多目录?
在每个照片目录各运行一次即可(它是递归的,选一个够上层的目录跑一次就够);
也可以把目录名写在后面一次交给它,例如 avif D:\照片A D:\照片B,会按顺序各处理一遍。
Q:我只想转几张,不想整棵树,怎么做?
用 §4.2 的写法:avif IMG_0001.Jpg IMG_0002.Jpg,或者 avif sub\*.jpg。
产物还是生成在原图所在的文件夹里,不会跑到别处去。
Q:avif *.jpg 怎么没处理子目录里的照片?
* 只管当前这一层,这是刻意设计的(免得在照片总目录里手一抖就动了全部几万张)。
子目录里的要么单独写 sub\*.jpg,要么写 *\*.jpg(每个子目录各匹配一层),
要么干脆用 §4.1 的用法一(不带参数 = 整棵树)。
Q:路径里有空格怎么办?
用双引号包起来:avif "D:\我的 照片\*.jpg"。没有空格时加不加都一样。
Q:avif 支持 --help 或 -r 这类开关吗?
不支持,也没有。avif 后面写的东西一律当成"要处理的文件"。
所以 avif --help 会告诉你"找不到:--help"(退出码 1)—— 不是故障,是它真的在找一个叫 --help 的文件。
Q:我写了 avif IMG_0001.Dng IMG_0001.Avif,为什么报"找不到 IMG_0001.Avif"?
因为程序是"先把你要处理的文件名全部核对一遍,再开始动手"的 —— 核对那一刻 .Avif 还没生成,
所以报了一句"找不到",而后面的转换其实照常完成了(文件能正常看到)。
只写要处理的原图就行:avif IMG_0001.Dng。.Avif 是产物,不需要写进命令行。
若不信,把同一条命令再跑一次,这句提示就没了(那时 .Avif 已经在了)。

浙公网安备 33010602011771号