diff --git a/go.mod b/go.mod
index 28d3132..2830299 100644
--- a/go.mod
+++ b/go.mod
@@ -3,6 +3,7 @@ module github.com/tenox7/wrp
go 1.14
require (
+ github.com/MaxHalford/halfgone v0.0.0-20171017091812-482157b86ccb
github.com/chromedp/cdproto v0.0.0-20200424080200-0de008e41fa0
github.com/chromedp/chromedp v0.5.3
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4
diff --git a/go.sum b/go.sum
index ba044df..96beb6c 100644
--- a/go.sum
+++ b/go.sum
@@ -1,3 +1,5 @@
+github.com/MaxHalford/halfgone v0.0.0-20171017091812-482157b86ccb h1:YQ+d0g0P0F/06oDoeEgDHeZCIrnKgLxXcqYOpe8sTuU=
+github.com/MaxHalford/halfgone v0.0.0-20171017091812-482157b86ccb/go.mod h1:J86XzS1wgzJPjpQmpriJ+SetP17JSQUd9l+HWQK86jA=
github.com/chromedp/cdproto v0.0.0-20200116234248-4da64dd111ac/go.mod h1:PfAWWKJqjlGFYJEidUM6aVIWPr0EpobeyVWEEmplX7g=
github.com/chromedp/cdproto v0.0.0-20200424080200-0de008e41fa0 h1:Mf2aT0YmWsdNULwaHeCktDLWHb1s+VoDi9xEcFboLQ4=
github.com/chromedp/cdproto v0.0.0-20200424080200-0de008e41fa0/go.mod h1:PfAWWKJqjlGFYJEidUM6aVIWPr0EpobeyVWEEmplX7g=
diff --git a/wrp.go b/wrp.go
index 28a1051..95c3b93 100644
--- a/wrp.go
+++ b/wrp.go
@@ -27,6 +27,7 @@ import (
"syscall"
"time"
+ "github.com/MaxHalford/halfgone"
"github.com/chromedp/cdproto/css"
"github.com/chromedp/cdproto/emulation"
"github.com/chromedp/cdproto/page"
@@ -357,6 +358,10 @@ func (w wrpReq) capture() {
fmt.Fprintf(w.out, "
Unable to decode page screenshot:
%s
\n", err)
return
}
+ if w.colors == 2 {
+ gray := halfgone.ImageToGray(i)
+ i = halfgone.FloydSteinbergDitherer{}.Apply(gray)
+ }
var gifbuf bytes.Buffer
err = gif.Encode(&gifbuf, i, &gif.Options{NumColors: int(w.colors), Quantizer: quantize.MedianCutQuantizer{}})
if err != nil {