stash/pkg/image/thumbnail.go

41 lines
995 B
Go

package image
import (
"bytes"
"image"
"image/jpeg"
"github.com/disintegration/imaging"
)
func ThumbnailNeeded(srcImage image.Image, maxSize int) bool {
dim := srcImage.Bounds().Max
w := dim.X
h := dim.Y
return w > maxSize || h > maxSize
}
// GetThumbnail returns the thumbnail image of the provided image resized to
// the provided max size. It resizes based on the largest X/Y direction.
// It returns nil and an error if an error occurs reading, decoding or encoding
// the image.
func GetThumbnail(srcImage image.Image, maxSize int) ([]byte, error) {
var resizedImage image.Image
// if height is longer then resize by height instead of width
dim := srcImage.Bounds().Max
if dim.Y > dim.X {
resizedImage = imaging.Resize(srcImage, 0, maxSize, imaging.Box)
} else {
resizedImage = imaging.Resize(srcImage, maxSize, 0, imaging.Box)
}
buf := new(bytes.Buffer)
err := jpeg.Encode(buf, resizedImage, nil)
if err != nil {
return nil, err
}
return buf.Bytes(), nil
}