From 8ed07333ed6ff2a19c81dc0a4478d9e14f06f37b Mon Sep 17 00:00:00 2001 From: Deluan Date: Thu, 16 May 2024 13:39:10 -0400 Subject: [PATCH] Improve resizeImage code readability --- core/artwork/reader_resized.go | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/core/artwork/reader_resized.go b/core/artwork/reader_resized.go index ea40b06af..9495abbb4 100644 --- a/core/artwork/reader_resized.go +++ b/core/artwork/reader_resized.go @@ -86,17 +86,12 @@ func (a *resizedArtworkReader) Reader(ctx context.Context) (io.ReadCloser, strin func asImageReader(r io.Reader) (io.Reader, string, error) { br := bufio.NewReader(r) buf, err := br.Peek(512) - if err == io.EOF && len(buf) > 0 { - // Check if there are enough bytes to detect type - typ := http.DetectContentType(buf) - if typ != "" { - return br, typ, nil - } - } - if err != nil { + if err != nil && err != io.EOF { return nil, "", err } - return br, http.DetectContentType(buf), nil + + typ := http.DetectContentType(buf) + return br, typ, nil } func resizeImage(reader io.Reader, size int) (io.Reader, int, error) { @@ -105,32 +100,26 @@ func resizeImage(reader io.Reader, size int) (io.Reader, int, error) { return nil, 0, err } - img, _, err := image.Decode(r) + original, _, err := image.Decode(r) if err != nil { return nil, 0, err } - // Don't upscale the image - bounds := img.Bounds() + bounds := original.Bounds() originalSize := max(bounds.Max.X, bounds.Max.Y) + + // Don't upscale the image if originalSize <= size { return nil, originalSize, nil } - var m *image.NRGBA - // Preserve the aspect ratio of the image. - if bounds.Max.X > bounds.Max.Y { - m = imaging.Resize(img, size, 0, imaging.Lanczos) - } else { - m = imaging.Resize(img, 0, size, imaging.Lanczos) - } + resized := imaging.Fit(original, size, size, imaging.Lanczos) buf := new(bytes.Buffer) - buf.Reset() if format == "image/png" { - err = png.Encode(buf, m) + err = png.Encode(buf, resized) } else { - err = jpeg.Encode(buf, m, &jpeg.Options{Quality: conf.Server.CoverJpegQuality}) + err = jpeg.Encode(buf, resized, &jpeg.Options{Quality: conf.Server.CoverJpegQuality}) } return buf, originalSize, err }