fix: compress with compression rate of 95

This commit is contained in:
lilong.129
2025-07-21 20:24:51 +08:00
parent 9e59b7ff9b
commit fbca5907c9
+9 -23
View File
@@ -336,33 +336,19 @@ func compressImageBufferWithOptions(raw *bytes.Buffer, enableResize bool, maxWid
newHeight = originalHeight newHeight = originalHeight
} }
// Determine JPEG quality based on image size for optimal compression jpegQuality := 95
jpegQuality := 60 // Default quality for better compression
if newWidth*newHeight > 500000 { // For very large images, use lower quality
jpegQuality = 50
} else if newWidth*newHeight < 100000 { // For small images, use higher quality
jpegQuality = 70
}
var buf bytes.Buffer var buf bytes.Buffer
switch strings.ToLower(format) { switch format {
case "jpeg", "jpg": case "jpeg", "jpg", "png":
// Use adaptive JPEG compression quality // compress with compression rate of 95
err = jpeg.Encode(&buf, resizedImg, &jpeg.Options{Quality: jpegQuality}) jpegOptions := &jpeg.Options{Quality: jpegQuality}
case "png": err = jpeg.Encode(&buf, resizedImg, jpegOptions)
// Convert PNG to JPEG for better compression
err = jpeg.Encode(&buf, resizedImg, &jpeg.Options{Quality: jpegQuality})
case "gif":
// Keep GIF format but with reduced colors for better compression
err = gif.Encode(&buf, resizedImg, &gif.Options{NumColors: 64})
default:
// Default to JPEG for unknown formats
err = jpeg.Encode(&buf, resizedImg, &jpeg.Options{Quality: jpegQuality})
}
if err != nil { if err != nil {
return nil, err return nil, err
} }
default:
return nil, fmt.Errorf("unsupported image format: %s", format)
}
compressedSize := buf.Len() compressedSize := buf.Len()
log.Debug(). log.Debug().