add support for webp encoding

This commit is contained in:
Will Norris 2024-05-08 20:33:29 -07:00
parent ef50c1f9a6
commit 0a89d43f75
4 changed files with 79 additions and 22 deletions

View file

@ -14,14 +14,14 @@ import (
"log"
"math"
"git.sr.ht/~jackmordaunt/go-libwebp/webp"
"github.com/disintegration/imaging"
"github.com/muesli/smartcrop"
"github.com/muesli/smartcrop/nfnt"
"github.com/prometheus/client_golang/prometheus"
"github.com/rwcarlsen/goexif/exif"
"golang.org/x/image/bmp" // register bmp format
"golang.org/x/image/tiff" // register tiff format
_ "golang.org/x/image/webp" // register webp format
"golang.org/x/image/bmp" // register bmp format
"golang.org/x/image/tiff" // register tiff format
"willnorris.com/go/gifresize"
)
@ -58,8 +58,8 @@ func Transform(img []byte, opt Options) ([]byte, error) {
}
}
// encode webp and tiff as jpeg by default
if format == "tiff" || format == "webp" {
// encode tiff as jpeg by default
if format == "tiff" {
format = "jpeg"
}
@ -107,6 +107,12 @@ func Transform(img []byte, opt Options) ([]byte, error) {
if err != nil {
return nil, err
}
case "webp":
m = transformImage(m, opt)
err = webp.Encode(buf, m)
if err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("unsupported format: %v", format)
}