package colormapping import ( "bytes" "image/color" "image/png" ) type Palette struct { colors map[int]*color.RGBA } func NewPalette(imagefile []byte) (*Palette, error) { palette := &Palette{ colors: make(map[int]*color.RGBA), } reader := bytes.NewReader(imagefile) img, err := png.Decode(reader) if err != nil { return nil, err } bounds := img.Bounds() index := 0 for y := bounds.Min.Y; y < bounds.Max.Y; y++ { for x := bounds.Min.X; x < bounds.Max.X; x++ { c := img.At(x, y) r, g, b, a := c.RGBA() //fmt.Println("x ", x, " y ", y, " Index: ", index, " Color ", c) palette.colors[index] = &color.RGBA{uint8(r), uint8(g), uint8(b), uint8(a)} index++ } } return palette, nil } func (m *Palette) GetColor(param2 int) *color.RGBA { return m.colors[param2] }