快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
奇怪,这些图片都是avif格式了,怎么还是体积好大呀??

@cusor auto模型回答,记录于2026年7月21日。
这很正常,转成 AVIF ≠ 一定很小。
你们现在的转换逻辑大致是:
1export function buildConvertFops(opts) {
2 const { bucket, avifKey, webpKey, maxEdge, alsoWebp } = opts;
3 const resize = maxEdge && maxEdge > 0 ? `/thumbnail/${maxEdge}x${maxEdge}>` : '';
4 const avifSave = urlsafeBase64Encode(`${bucket}:${avifKey}`);
5 const fops = [`imageMogr2${resize}/format/avif|saveas/${avifSave}`];也就是说:
/format/avif),没有压质量(没传 /quality/...)CONVERT_MAX_EDGE 默认 2560)所以你标红的那些 2–3MB 的人像,和左上角那张只有 50KB 的图差很多,多半是源图分辨率/内容复杂度不同,不是“没转成 AVIF”。
如果想明显变小,可以:
CONVERT_MAX_EDGE 降到 1920 或 1600/quality/40 或更低需要的话我可以直接帮你改转换参数,让新上传的 AVIF 更小。
帮我直接改转换参数,我需要次图床能实现:
01.将图片格式转换成.avif格式
02.同时,图片质量必须要小,但不能影响其画质;
请优化。
已优化转码参数,部署后新上传会生效。
🟢改动要点
| 参数 | 之前 | 现在 | 作用 |
|---|---|---|---|
| 最长边 | 2560 | 1920 | 分辨率更合适,体积明显下降 |
| AVIF 质量 | 未设置(七牛默认 50) | 40 强制(quality/40!) | 体积更小,观感仍接近无损 |
| WebP 质量 | 未设置 | 75 强制 | 勾选「同时产出 WebP」时一致压缩 |
实际 fop 形如:
1imageMogr2/thumbnail/1920x1920>/quality/40!/format/avif人像类图预计可从 2–3MB 降到大约几百 KB(视内容而定)。
🟢可调环境变量
CONVERT_MAX_EDGE(默认 1920)CONVERT_QUALITY(默认 40)CONVERT_WEBP_QUALITY(默认 75)若觉得略糊可把 CONVERT_QUALITY 调到 45~50;若还想更小可降到 35。
注意: 已上传的大图不会自动变小;需重新上传,或在后台对保留了原图的条目点「重试」转码。部署后再试一张即可验证效果。
奇怪,这2张图片下载到本地后图片质量怎么变小了(只有149KB,37.7KB)?但是图床上显示却有好几兆呢(3.65MB, 3.48MB)?


这不是图片“变小了”,而是图床上显示的体积是错的。
🟢原因
| 你看到的 | 实际是什么 |
|---|---|
| 本地下载 149KB / 37.7KB | 真实的 AVIF 文件大小(已经压好了) |
| 图床显示 3.65MB / 3.48MB | 上传时原图的大小(转码前记进去的) |
上传时把 size 写成了原图体积,转成 AVIF 后没有回写真实大小,所以界面一直显示原图的几兆。
🟢已修复
转码成功后会 stat 七牛上的 AVIF,把真实 fsize 写回;列表同步时也会用对象真实大小校正旧数据。
部署后点一下后台的刷新/同步七牛索引,那两张图的显示就会变成和本地差不多的 KB 级。需要的话我可以帮你提交并推送这次修复。
日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白