package resize import ( "bytes" "fmt" "github.com/nfnt/resize" i "image" "image/jpeg" _ "image/png" ) func Shrink(image string, maxSize uint, quality int) (string, error) { if quality < 1 || quality > 100 { return "", fmt.Errorf("quality must be between 1 and 100, got %d", quality) } img, _, err := i.Decode(bytes.NewReader([]byte(image))) if err != nil { return "", err } resizedImg := resize.Thumbnail(maxSize, maxSize, img, resize.Lanczos3) var buffer bytes.Buffer err = jpeg.Encode(&buffer, resizedImg, &jpeg.Options{Quality: quality}) if err != nil { return "", err } return buffer.String(), nil }