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
+10 -24
View File
@@ -336,32 +336,18 @@ 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 if err != nil {
err = jpeg.Encode(&buf, resizedImg, &jpeg.Options{Quality: jpegQuality}) return nil, err
case "gif": }
// Keep GIF format but with reduced colors for better compression
err = gif.Encode(&buf, resizedImg, &gif.Options{NumColors: 64})
default: default:
// Default to JPEG for unknown formats return nil, fmt.Errorf("unsupported image format: %s", format)
err = jpeg.Encode(&buf, resizedImg, &jpeg.Options{Quality: jpegQuality})
}
if err != nil {
return nil, err
} }
compressedSize := buf.Len() compressedSize := buf.Len()