summaryrefslogtreecommitdiff
path: root/internal/media/thumbnail.go
diff options
context:
space:
mode:
authorLibravatar kim <grufwub@gmail.com>2025-06-10 15:43:31 +0200
committerLibravatar kim <gruf@noreply.codeberg.org>2025-06-10 15:43:31 +0200
commitd7f967cbb599c64d18fe951d1725bf3050597dda (patch)
tree061a302732684980e3dbf3f1a6012f3cbef01e26 /internal/media/thumbnail.go
parent[chore] Update interactionPolicy sub-policy parsing in line with documented d... (diff)
downloadgotosocial-d7f967cbb599c64d18fe951d1725bf3050597dda.tar.xz
[feature] configurable maximum thumbnail dimensions (#4258)
- adds configuration for thumbnail maximum dimensions with warning on exceeding recommendations - moves the media configuration vars into their own sub-struct - replaces the configuration flag funcs with simple string consts Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4258 Reviewed-by: tobi <kipvandenbos@noreply.codeberg.org> Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/media/thumbnail.go')
-rw-r--r--internal/media/thumbnail.go22
1 files changed, 9 insertions, 13 deletions
diff --git a/internal/media/thumbnail.go b/internal/media/thumbnail.go
index 56247bc33..8493ba657 100644
--- a/internal/media/thumbnail.go
+++ b/internal/media/thumbnail.go
@@ -33,37 +33,33 @@ import (
"golang.org/x/image/webp"
)
-const (
- maxThumbWidth = 512
- maxThumbHeight = 512
-)
-
// thumbSize returns the dimensions to use for an input
// image of given width / height, for its outgoing thumbnail.
// This attempts to maintains the original image aspect ratio.
-func thumbSize(width, height int, aspect float32) (int, int) {
+func thumbSize(max, width, height int, aspect float32) (int, int) {
switch {
// Simplest case, within bounds!
- case width < maxThumbWidth &&
- height < maxThumbHeight:
+ case width < max && height < max:
return width, height
// Width is larger side.
case width > height:
+
// i.e. height = newWidth * (height / width)
- height = int(float32(maxThumbWidth) / aspect)
- return maxThumbWidth, height
+ height = int(float32(max) / aspect)
+ return max, height
// Height is larger side.
case height > width:
+
// i.e. width = newHeight * (width / height)
- width = int(float32(maxThumbHeight) * aspect)
- return width, maxThumbHeight
+ width = int(float32(max) * aspect)
+ return width, max
// Square.
default:
- return maxThumbWidth, maxThumbHeight
+ return max, max
}
}