package util import ( "bytes" "encoding/base64" "image" "image/jpeg" "image/png" ) // EncodePNG encodes img as PNG bytes. func EncodePNG(img image.Image) ([]byte, error) { var buf bytes.Buffer if err := png.Encode(&buf, img); err != nil { return nil, err } return buf.Bytes(), nil } // EncodeImageToBase64PNG encodes img as a base64-encoded PNG string. func EncodeImageToBase64PNG(img image.Image) (string, error) { data, err := EncodePNG(img) if err != nil { return "", err } return base64.StdEncoding.EncodeToString(data), nil } // DecodeBase64PNG decodes a base64-encoded PNG string to an image.Image. func DecodeBase64PNG(b64 string) (image.Image, error) { data, err := base64.StdEncoding.DecodeString(b64) if err != nil { return nil, err } return png.Decode(bytes.NewReader(data)) } // EncodeJPEG encodes img as JPEG bytes with quality 90. func EncodeJPEG(img image.Image) ([]byte, error) { var buf bytes.Buffer if err := jpeg.Encode(&buf, img, &jpeg.Options{Quality: 90}); err != nil { return nil, err } return buf.Bytes(), nil }