
Reviewed-on: #1 Co-authored-by: Ron Rise <ron@siteworxpro.com> Co-committed-by: Ron Rise <ron@siteworxpro.com>
32 lines
633 B
Go
32 lines
633 B
Go
package resize
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
i "image"
|
|
"image/jpeg"
|
|
_ "image/png"
|
|
|
|
"github.com/nfnt/resize"
|
|
)
|
|
|
|
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
|
|
}
|