feat(photos): add square medium variant for sharp grid thumbnails
This commit is contained in:
@@ -121,24 +121,31 @@ func ExtractEXIFAttributes(data []byte) map[string]any {
|
||||
return extractEXIF(data).Attributes
|
||||
}
|
||||
|
||||
func buildVariants(data []byte) (thumb, preview []byte, err error) {
|
||||
func buildVariants(data []byte) (thumb, medium, preview []byte, err error) {
|
||||
img, err := imaging.Decode(bytes.NewReader(data), imaging.AutoOrientation(true))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
thumbImg := imaging.Fit(img, 200, 200, imaging.Lanczos)
|
||||
// Grid variants are square crops so a square tile is never upscaled; the
|
||||
// viewer preview keeps the aspect ratio.
|
||||
thumbImg := imaging.Fill(img, 200, 200, imaging.Center, imaging.Lanczos)
|
||||
mediumImg := imaging.Fill(img, 800, 800, imaging.Center, imaging.Lanczos)
|
||||
previewImg := imaging.Fit(img, 1200, 1200, imaging.Lanczos)
|
||||
|
||||
opts := webp.Options{Quality: 82}
|
||||
var thumbBuf bytes.Buffer
|
||||
if err := webp.Encode(&thumbBuf, thumbImg, opts); err != nil {
|
||||
return nil, nil, err
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
var mediumBuf bytes.Buffer
|
||||
if err := webp.Encode(&mediumBuf, mediumImg, opts); err != nil {
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
var previewBuf bytes.Buffer
|
||||
if err := webp.Encode(&previewBuf, previewImg, opts); err != nil {
|
||||
return nil, nil, err
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
return thumbBuf.Bytes(), previewBuf.Bytes(), nil
|
||||
return thumbBuf.Bytes(), mediumBuf.Bytes(), previewBuf.Bytes(), nil
|
||||
}
|
||||
|
||||
// checksum returns the hex-encoded SHA-256 of the given bytes.
|
||||
|
||||
Reference in New Issue
Block a user