mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package app
|
|
|
|
import (
|
|
"image"
|
|
|
|
"github.com/disintegration/imaging"
|
|
)
|
|
|
|
func genThumbnail(img image.Image) image.Image {
|
|
thumb := img
|
|
w := img.Bounds().Dx()
|
|
h := img.Bounds().Dy()
|
|
|
|
if h > ImageThumbnailHeight || w > ImageThumbnailWidth {
|
|
ratio := float64(h) / float64(w)
|
|
if ratio < ImageThumbnailRatio {
|
|
// we pre-calculate the thumbnail's width to make sure we are not upscaling.
|
|
targetWidth := int(float64(ImageThumbnailHeight) * float64(w) / float64(h))
|
|
if targetWidth <= w {
|
|
thumb = imaging.Resize(img, 0, ImageThumbnailHeight, imaging.Lanczos)
|
|
} else {
|
|
thumb = imaging.Resize(img, ImageThumbnailWidth, 0, imaging.Lanczos)
|
|
}
|
|
} else {
|
|
// we pre-calculate the thumbnail's height to make sure we are not upscaling.
|
|
targetHeight := int(float64(ImageThumbnailWidth) * float64(h) / float64(w))
|
|
if targetHeight <= h {
|
|
thumb = imaging.Resize(img, ImageThumbnailWidth, 0, imaging.Lanczos)
|
|
} else {
|
|
thumb = imaging.Resize(img, 0, ImageThumbnailHeight, imaging.Lanczos)
|
|
}
|
|
}
|
|
}
|
|
|
|
return thumb
|
|
}
|
|
|
|
func genPreview(img image.Image) image.Image {
|
|
preview := img
|
|
w := img.Bounds().Dx()
|
|
|
|
if w > ImagePreviewWidth {
|
|
preview = imaging.Resize(img, ImagePreviewWidth, 0, imaging.Lanczos)
|
|
}
|
|
|
|
return preview
|
|
}
|