mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-18 21:07:44 +03:00
Simplify image format detection code
This commit is contained in:
parent
8ed07333ed
commit
7f52ff72dc
@ -216,12 +216,9 @@ var _ = Describe("Artwork", func() {
|
|||||||
r, _, err := aw.Get(context.Background(), alMultipleCovers.CoverArtID(), 15)
|
r, _, err := aw.Get(context.Background(), alMultipleCovers.CoverArtID(), 15)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
br, format, err := asImageReader(r)
|
img, format, err := image.Decode(r)
|
||||||
Expect(format).To(Equal("image/png"))
|
|
||||||
Expect(err).ToNot(HaveOccurred())
|
|
||||||
|
|
||||||
img, _, err := image.Decode(br)
|
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(format).To(Equal("png"))
|
||||||
Expect(img.Bounds().Size().X).To(Equal(15))
|
Expect(img.Bounds().Size().X).To(Equal(15))
|
||||||
Expect(img.Bounds().Size().Y).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)
|
r, _, err := aw.Get(context.Background(), alMultipleCovers.CoverArtID(), 200)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
br, format, err := asImageReader(r)
|
img, format, err := image.Decode(r)
|
||||||
Expect(format).To(Equal("image/jpeg"))
|
Expect(format).To(Equal("jpeg"))
|
||||||
Expect(err).ToNot(HaveOccurred())
|
|
||||||
|
|
||||||
img, _, err := image.Decode(br)
|
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(img.Bounds().Size().X).To(Equal(200))
|
Expect(img.Bounds().Size().X).To(Equal(200))
|
||||||
Expect(img.Bounds().Size().Y).To(Equal(200))
|
Expect(img.Bounds().Size().Y).To(Equal(200))
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package artwork
|
package artwork
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -9,7 +8,6 @@ import (
|
|||||||
"image/jpeg"
|
"image/jpeg"
|
||||||
"image/png"
|
"image/png"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/disintegration/imaging"
|
"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
|
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) {
|
func resizeImage(reader io.Reader, size int) (io.Reader, int, error) {
|
||||||
r, format, err := asImageReader(reader)
|
original, format, err := image.Decode(reader)
|
||||||
if err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
original, _, err := image.Decode(r)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, err
|
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)
|
resized := imaging.Fit(original, size, size, imaging.Lanczos)
|
||||||
|
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
if format == "image/png" {
|
if format == "png" {
|
||||||
err = png.Encode(buf, resized)
|
err = png.Encode(buf, resized)
|
||||||
} else {
|
} else {
|
||||||
err = jpeg.Encode(buf, resized, &jpeg.Options{Quality: conf.Server.CoverJpegQuality})
|
err = jpeg.Encode(buf, resized, &jpeg.Options{Quality: conf.Server.CoverJpegQuality})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user