main.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package main
  2. import (
  3. "fmt"
  4. "image"
  5. "image/color"
  6. "image/gif"
  7. "log"
  8. )
  9. func main() {
  10. var (
  11. err error
  12. gif *gif.GIF
  13. size image.Point
  14. pix color.Color
  15. r uint32
  16. g uint32
  17. b uint32
  18. hits uint32
  19. total_hits uint64
  20. )
  21. /*
  22. err = GrabPascoGif()
  23. if err != nil {
  24. log.Panic("GrabPascoGif() >", err)
  25. }
  26. err = GrabCentralFloridaGif()
  27. if err != nil {
  28. log.Panic("GrabCentralFloridaGif() >", err)
  29. }
  30. */
  31. gif, err = DecodeGif("pasco.gif")
  32. if err != nil {
  33. log.Panic("DecodeGif(\"pasco.gif\") >", err)
  34. }
  35. total_hits = 0
  36. for frame_num, frame := range gif.Image {
  37. size = frame.Bounds().Size()
  38. hits = 0
  39. for y := range make([]byte, size.Y) {
  40. for x := range make([]byte, size.X) {
  41. pix = frame.At(x, y)
  42. r, g, b, _ = pix.RGBA()
  43. r /= 255
  44. g /= 255
  45. b /= 255
  46. // Now to determine if this pixel is considerable as rain
  47. if r <= 140 && g >= 120 && b <= 140 {
  48. //fmt.Printf("{(%d, %d) [%d, %d, %d]} ", x, y, r, g, b)
  49. frame.Set(x, y, color.RGBA{R: 255, G: 0, B: 0, A: 255})
  50. hits += 1
  51. }
  52. }
  53. }
  54. fmt.Printf("%s-%d: %d hits\r\n", "pasco.gif", frame_num, hits)
  55. total_hits += uint64(hits)
  56. }
  57. fmt.Printf("%s: %d total hits\r\n", "pasco.gif", total_hits)
  58. err = EncodeGif("out", gif)
  59. if err != nil {
  60. log.Panic("EncodeGif(\"out\", gif) >", err)
  61. }
  62. /*
  63. err = EncodeGif("out", gif, true)
  64. if err != nil {
  65. log.Panic("EncodeGif(\"out\", gif, true) >", err)
  66. }
  67. */
  68. }