MetaTube / imageutil /decode.go
henry99a's picture
Clean commit for Hugging Face Spaces without binary files
ca7217f
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
}