diff options
| author | 2025-06-10 15:43:31 +0200 | |
|---|---|---|
| committer | 2025-06-10 15:43:31 +0200 | |
| commit | d7f967cbb599c64d18fe951d1725bf3050597dda (patch) | |
| tree | 061a302732684980e3dbf3f1a6012f3cbef01e26 /internal/media/thumbnail.go | |
| parent | [chore] Update interactionPolicy sub-policy parsing in line with documented d... (diff) | |
| download | gotosocial-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.go | 22 |
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 } } |
