Simplify image format detection code

This commit is contained in:
Deluan 2024-05-16 13:48:26 -04:00
parent 8ed07333ed
commit 7f52ff72dc
2 changed files with 6 additions and 30 deletions

View File

@ -216,12 +216,9 @@ var _ = Describe("Artwork", func() {
r, _, err := aw.Get(context.Background(), alMultipleCovers.CoverArtID(), 15)
Expect(err).ToNot(HaveOccurred())
br, format, err := asImageReader(r)
Expect(format).To(Equal("image/png"))
Expect(err).ToNot(HaveOccurred())
img, _, err := image.Decode(br)
img, format, err := image.Decode(r)
Expect(err).ToNot(HaveOccurred())
Expect(format).To(Equal("png"))
Expect(img.Bounds().Size().X).To(Equal(15))
Expect(img.Bounds().Size().Y).To(Equal(15))
})
@ -230,11 +227,8 @@ var _ = Describe("Artwork", func() {
r, _, err := aw.Get(context.Background(), alMultipleCovers.CoverArtID(), 200)
Expect(err).ToNot(HaveOccurred())
br, format, err := asImageReader(r)
Expect(format).To(Equal("image/jpeg"))
Expect(err).ToNot(HaveOccurred())
img, _, err := image.Decode(br)
img, format, err := image.Decode(r)
Expect(format).To(Equal("jpeg"))
Expect(err).ToNot(HaveOccurred())
Expect(img.Bounds().Size().X).To(Equal(200))
Expect(img.Bounds().Size().Y).To(Equal(200))

View File

@ -1,7 +1,6 @@
package artwork
import (
"bufio"
"bytes"
"context"
"fmt"
@ -9,7 +8,6 @@ import (
"image/jpeg"
"image/png"
"io"
"net/http"
"time"
"github.com/disintegration/imaging"
@ -83,24 +81,8 @@ func (a *resizedArtworkReader) Reader(ctx context.Context) (io.ReadCloser, strin
return io.NopCloser(resized), fmt.Sprintf("%s@%d", a.artID, a.size), nil
}
func asImageReader(r io.Reader) (io.Reader, string, error) {
br := bufio.NewReader(r)
buf, err := br.Peek(512)
if err != nil && err != io.EOF {
return nil, "", err
}
typ := http.DetectContentType(buf)
return br, typ, nil
}
func resizeImage(reader io.Reader, size int) (io.Reader, int, error) {
r, format, err := asImageReader(reader)
if err != nil {
return nil, 0, err
}
original, _, err := image.Decode(r)
original, format, err := image.Decode(reader)
if err != nil {
return nil, 0, err
}
@ -116,7 +98,7 @@ func resizeImage(reader io.Reader, size int) (io.Reader, int, error) {
resized := imaging.Fit(original, size, size, imaging.Lanczos)
buf := new(bytes.Buffer)
if format == "image/png" {
if format == "png" {
err = png.Encode(buf, resized)
} else {
err = jpeg.Encode(buf, resized, &jpeg.Options{Quality: conf.Server.CoverJpegQuality})