feat(photos): add square medium variant for sharp grid thumbnails

This commit is contained in:
iu
2026-10-11 19:57:00 +03:00
parent 581e479f03
commit f1b3b01bdf
27 changed files with 459 additions and 32 deletions
+13 -6
View File
@@ -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.