From 849239fc8e544a64ebef8f7499aabead5506f2f5 Mon Sep 17 00:00:00 2001 From: Antoni Sawicki Date: Thu, 6 Jun 2019 01:06:36 -0700 Subject: [PATCH] added real color quantizer, number of colors works now --- wrp.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/wrp.go b/wrp.go index 91f177d..b7b7e76 100644 --- a/wrp.go +++ b/wrp.go @@ -12,9 +12,6 @@ import ( "context" "flag" "fmt" - "image" - "image/color/palette" - "image/draw" "image/gif" "image/png" "log" @@ -31,6 +28,8 @@ import ( "github.com/chromedp/cdproto/cdp" "github.com/chromedp/cdproto/dom" "github.com/chromedp/chromedp" + + "github.com/ericpauley/go-quantize/quantize" ) // Ismap for server side processing @@ -101,7 +100,7 @@ func pageServer(out http.ResponseWriter, req *http.Request) { fmt.Fprintf(out, "W \n", w) fmt.Fprintf(out, "H \n", h) fmt.Fprintf(out, "S \n", s) - //fmt.Fprintf(out, "C \n", c) + fmt.Fprintf(out, "C \n", c) fmt.Fprintf(out, "
\n") if len(u) > 1 { if strings.HasPrefix(u, "http") { @@ -197,10 +196,8 @@ func capture(gourl string, w int64, h int64, s float64, co int, p int64, i bool, fmt.Fprintf(out, "
Unable to decode page screenshot:
%s
\n", err) return } - pm := image.NewPaletted(img.Bounds(), palette.WebSafe) - draw.FloydSteinberg.Draw(pm, img.Bounds(), img, image.ZP) gifbuf.Reset() - err = gif.Encode(&gifbuf, img, nil) + err = gif.Encode(&gifbuf, img, &gif.Options{NumColors: co, Quantizer: quantize.MedianCutQuantizer{}}) if err != nil { log.Printf("%s Failed to encode GIF: %s\n", c, err) fmt.Fprintf(out, "
Unable to encode GIF:
%s
\n", err) @@ -209,7 +206,7 @@ func capture(gourl string, w int64, h int64, s float64, co int, p int64, i bool, seq := rand.Intn(9999) imgpath := fmt.Sprintf("/img/%04d.gif", seq) mappath := fmt.Sprintf("/map/%04d.map", seq) - log.Printf("%s Encoded GIF image: %s, Size: %dKB\n", c, imgpath, len(gifbuf.Bytes())/1024) + log.Printf("%s Encoded GIF image: %s, Size: %dKB, Colors: %d\n", c, imgpath, len(gifbuf.Bytes())/1024, co) gifmap[imgpath] = gifbuf // Process Nodes