go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

commit cb025bcd4e24edd37e5bb7687c15c9576a3fde9c
parent dbf7df92d89cfa1a3ca545de90bc1bd7cb3bbf47
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date:   Sat, 29 Jan 2022 17:32:14 +0800

webp: functional options

Configure encoding with functional options.

Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>

Diffstat:
Mwebp/webp.go | 22+++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/webp/webp.go b/webp/webp.go @@ -16,9 +16,29 @@ func init() { image.RegisterFormat("webp", "RIFF????WEBP", Decode, DecodeConfig) } +// EncodeOption configures the encoder. +type EncodeOption func(*Encoder) + +// Quality in the range (0,1]. +func Quality(q float32) EncodeOption { + return func(enc *Encoder) { + enc.Quality = q + } +} + +// Lossless will ignore quality. +func Lossless() EncodeOption { + return func(enc *Encoder) { + enc.Lossless = true + } +} + // Encode an image into webp with default settings. -func Encode(w io.Writer, m image.Image) error { +func Encode(w io.Writer, m image.Image, opt ...EncodeOption) error { var enc Encoder + for _, op := range opt { + op(&enc) + } return enc.Encode(w, m) }