File size: 581 Bytes
ca7217f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package imageutil

import (
	"errors"
	"image"
	"image/jpeg"
	"io"

	"github.com/docker/go-units"
	"github.com/gen2brain/jpegli"

	"github.com/metatube-community/metatube-sdk-go/common/bufferpool"
)

var _pool = bufferpool.New(256 * units.KiB)

func Decode(r io.Reader) (image.Image, string, error) {
	buf := _pool.Get()
	defer _pool.Put(buf)
	var jpegErr jpeg.UnsupportedError
	m, f, err := image.Decode(io.TeeReader(r, buf))
	if err != nil && errors.As(err, &jpegErr) {
		// Fallback to decode with jpegli.
		m, err = jpegli.Decode(io.MultiReader(buf, r))
	}
	return m, f, err
}