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 {