package main import ( "fmt" "image" "image/color" "image/gif" "log" ) func main() { var ( err error gif *gif.GIF size image.Point pix color.Color r uint32 g uint32 b uint32 hits uint32 total_hits uint64 ) /* err = GrabPascoGif() if err != nil { log.Panic("GrabPascoGif() >", err) } err = GrabCentralFloridaGif() if err != nil { log.Panic("GrabCentralFloridaGif() >", err) } */ gif, err = DecodeGif("pasco.gif") if err != nil { log.Panic("DecodeGif(\"pasco.gif\") >", err) } total_hits = 0 for frame_num, frame := range gif.Image { size = frame.Bounds().Size() hits = 0 for y := range make([]byte, size.Y) { for x := range make([]byte, size.X) { pix = frame.At(x, y) r, g, b, _ = pix.RGBA() r /= 255 g /= 255 b /= 255 // Now to determine if this pixel is considerable as rain if r <= 140 && g >= 120 && b <= 140 { //fmt.Printf("{(%d, %d) [%d, %d, %d]} ", x, y, r, g, b) frame.Set(x, y, color.RGBA{R: 255, G: 0, B: 0, A: 255}) hits += 1 } } } fmt.Printf("%s-%d: %d hits\r\n", "pasco.gif", frame_num, hits) total_hits += uint64(hits) } fmt.Printf("%s: %d total hits\r\n", "pasco.gif", total_hits) err = EncodeGif("out", gif) if err != nil { log.Panic("EncodeGif(\"out\", gif) >", err) } /* err = EncodeGif("out", gif, true) if err != nil { log.Panic("EncodeGif(\"out\", gif, true) >", err) } */ }