[MM-28638] Improve image thumbnail generation logic (#15534)
* Improve image thumbnail generation logic * Improve naming
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
0af0a4eff4
Коммит
73c41ef808
43
app/file.go
43
app/file.go
@@ -838,31 +838,16 @@ func (t *UploadFileTask) postprocessImage() {
|
||||
}
|
||||
}
|
||||
|
||||
w := decoded.Bounds().Dx()
|
||||
h := decoded.Bounds().Dy()
|
||||
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(3)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
thumb := decoded
|
||||
if h > ImageThumbnailHeight || w > ImageThumbnailWidth {
|
||||
if float64(h)/float64(w) < ImageThumbnailRatio {
|
||||
thumb = imaging.Resize(decoded, 0, ImageThumbnailHeight, imaging.Lanczos)
|
||||
} else {
|
||||
thumb = imaging.Resize(decoded, ImageThumbnailWidth, 0, imaging.Lanczos)
|
||||
}
|
||||
}
|
||||
writeJPEG(thumb, t.fileinfo.ThumbnailPath)
|
||||
writeJPEG(genThumbnail(decoded), t.fileinfo.ThumbnailPath)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
preview := decoded
|
||||
if w > ImagePreviewWidth {
|
||||
preview = imaging.Resize(decoded, ImagePreviewWidth, 0, imaging.Lanczos)
|
||||
}
|
||||
writeJPEG(preview, t.fileinfo.PreviewPath)
|
||||
writeJPEG(genPreview(decoded), t.fileinfo.PreviewPath)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
@@ -1083,22 +1068,8 @@ func getImageOrientation(input io.Reader) (int, error) {
|
||||
}
|
||||
|
||||
func (a *App) generateThumbnailImage(img image.Image, thumbnailPath string, width int, height int) {
|
||||
thumbWidth := float64(IMAGE_THUMBNAIL_PIXEL_WIDTH)
|
||||
thumbHeight := float64(IMAGE_THUMBNAIL_PIXEL_HEIGHT)
|
||||
imgWidth := float64(width)
|
||||
imgHeight := float64(height)
|
||||
|
||||
var thumbnail image.Image
|
||||
if imgHeight < IMAGE_THUMBNAIL_PIXEL_HEIGHT && imgWidth < thumbWidth {
|
||||
thumbnail = img
|
||||
} else if imgHeight/imgWidth < thumbHeight/thumbWidth {
|
||||
thumbnail = imaging.Resize(img, 0, IMAGE_THUMBNAIL_PIXEL_HEIGHT, imaging.Lanczos)
|
||||
} else {
|
||||
thumbnail = imaging.Resize(img, IMAGE_THUMBNAIL_PIXEL_WIDTH, 0, imaging.Lanczos)
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
if err := jpeg.Encode(buf, thumbnail, &jpeg.Options{Quality: 90}); err != nil {
|
||||
if err := jpeg.Encode(buf, genThumbnail(img), &jpeg.Options{Quality: 90}); err != nil {
|
||||
mlog.Error("Unable to encode image as jpeg", mlog.String("path", thumbnailPath), mlog.Err(err))
|
||||
return
|
||||
}
|
||||
@@ -1110,13 +1081,7 @@ func (a *App) generateThumbnailImage(img image.Image, thumbnailPath string, widt
|
||||
}
|
||||
|
||||
func (a *App) generatePreviewImage(img image.Image, previewPath string, width int) {
|
||||
var preview image.Image
|
||||
|
||||
if width > IMAGE_PREVIEW_PIXEL_WIDTH {
|
||||
preview = imaging.Resize(img, IMAGE_PREVIEW_PIXEL_WIDTH, 0, imaging.Lanczos)
|
||||
} else {
|
||||
preview = img
|
||||
}
|
||||
preview := genPreview(img)
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user