perf: improve perceptual image compression
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
237899745
2026-07-26 00:13:35 +08:00
parent 86da5cf1f5
commit feed34cb0b
2 changed files with 631 additions and 169 deletions

View File

@@ -280,7 +280,8 @@ Idempotency-Key: <key> # 建议
处理约束: 处理约束:
- 动画 GIF/APNG/WebP/AVIF 不会静默截取首帧,而是返回 `400 UNSUPPORTED_FORMAT` - 动画 GIF/APNG/WebP/AVIF 不会静默截取首帧,而是返回 `400 UNSUPPORTED_FORMAT`
- EXIF 方向会先应用到像素,再移除或归一化方向标记;透明图片转 JPEG 时以白色合成背景。 - EXIF 方向会先应用到像素,再移除或归一化方向标记;透明图片转 JPEG 时以白色合成背景。
- 目标体积搜索优先保持原分辨率,必要时在清晰度保护范围内缩放;仍无法达到时返回 `400 INVALID_REQUEST`,不会把超出目标的文件作为成功结果 - 目标体积搜索先尝试原尺寸最高质量;无法满足时固定感知质量下限并搜索可用的最大分辨率,避免以极低质量强行保留像素尺寸。显式传入 `max_width``max_height` 时不会再次自动缩放,只在指定尺寸内调节质量
- WebP 优先使用 libwebp 原生目标码率控制并预留安全余量,仍超过硬上限时自动回退到通用搜索;无法在清晰度保护范围内达到目标时返回 `400 INVALID_REQUEST`
- `compression_rate=100` 只有在同格式且未指定缩放时属于免计量原样请求;格式转换或缩放后若体积变小,正常计 1 次。 - `compression_rate=100` 只有在同格式且未指定缩放时属于免计量原样请求;格式转换或缩放后若体积变小,正常计 1 次。
响应: 响应:

File diff suppressed because it is too large Load Diff