diff --git a/internal/service/avatar_service.go b/internal/service/avatar_service.go index 043fdbd..2a6bb15 100644 --- a/internal/service/avatar_service.go +++ b/internal/service/avatar_service.go @@ -67,8 +67,14 @@ func (s *AvatarService) ProcessAvatar(userID uint, file io.Reader, contentType s return "", fmt.Errorf("文件大小不能超过 5MB") } - // 3. 解码图片 - img, _, err := image.Decode(bytes.NewReader(data)) + // 3. 解码图片(WebP 需显式调用 webp.Decode,Go 标准库不含 WebP 解码器) + var img image.Image + switch contentType { + case "image/webp": + img, err = webp.Decode(bytes.NewReader(data)) + default: + img, _, err = image.Decode(bytes.NewReader(data)) + } if err != nil { return "", fmt.Errorf("图片解码失败:%v", err) }