Improve resizeImage code readability

This commit is contained in:
Deluan 2024-05-16 13:39:10 -04:00
parent 52235c291d
commit 8ed07333ed
1 changed files with 11 additions and 22 deletions

View File

@ -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
}