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:
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)
}