webp fix v2
This commit is contained in:
@@ -44,6 +44,13 @@
|
||||
- **EXIF 方向必须在转码前归一**(`exif.go` 手工解析 APP1,无外部依赖)。
|
||||
`image.Decode` 与 Pillow 默认都不读 EXIF;**转成 WebP 后 EXIF 被丢弃、方向永久丢失**。
|
||||
顺序铁律:**先归一方向 → 再限边缩放**(归一会交换宽高)。
|
||||
⚠️ **比例校验必须用同一套方向**(`aspect.check(cfg, orientation)` + `orientationSwapsDimensions`),
|
||||
否则手机竖拍照片(像素横躺 + Orientation=6)直传头像/背景会被误判「比例不符」而拒。
|
||||
比例校验只交换宽高、**不解码像素**(大图内存)。前端 cropper 路径不受影响(canvas 已归一)。
|
||||
- **上传管线只完整解码一次**:`image.DecodeConfig` 一次同时拿 format + 宽高,
|
||||
供像素上限 / 比例 / WebP 透传三处共用;完整解码只在真正转码时发生。
|
||||
`ConvertStaticImageToWebP(data []byte, spec)` 收字节而非 `io.Reader`。
|
||||
实测堆峰值:JPEG 4000×3000 单解 18MB / 双解 36MB(正好 2 倍),1C1G 上很关键。
|
||||
- GIF 帧数上限 `maxGIFFrames = 200`:`CheckPixelLimit` 只看逻辑屏尺寸,
|
||||
几百帧的大 GIF 体积小但能让 `cwebp` 长时间吃 CPU。
|
||||
- **method=6 已评估并否决**:实测耗时只增 1.2~1.9x(不是原以为的 5~10x),
|
||||
|
||||
Reference in New Issue
Block a user