使用Color包从RGB值创建新颜色?

ser*_*erg 6 pixel colors go rgba

我正在尝试Color使用变量中的RGB值创建一个新对象:

http://golang.org/pkg/image/color/


package main

import (
    "fmt"
    "image"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"
    "os"
)

func main() {
    reader, err := os.Open("test-image.jpg")
    if err != nil {
        fmt.Fprintf(os.Stderr, "%v\n", err)
    }

    image, _, err := image.Decode(reader)
    if err != nil {
        fmt.Fprintf(os.Stderr, "%s", err)
    }

    bounds := image.Bounds()

    for i := 0; i <= bounds.Max.X; i++ {
        for j := 0; j <= bounds.Max.Y; j++ {
            pixel := image.At(i, j)
            if i == 0 && j == 0 {
                red, green, blue, _ := pixel.RGBA()
                averaged := (red + green + blue) / 3

                            // This FromRGBA function DOES NOT EXIST!
                grayColor := Color.FromRGBA(averaged, averaged, averaged, 1)

                // Then I could do something like:
                grayColor.RGBA() // This would work since it's a type Color.

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到任何包给出rgba值的生成新Color对象的包.

有什么建议?

Jam*_*dge 1

包中的类型image/color具有导出字段,因此您可以直接实例化它们。对于您的示例,您可以使用以下命令创建颜色值:

grayColor := color.Gray16{Y: uint16(averaged)}
Run Code Online (Sandbox Code Playgroud)

redgreenblue值都在该0..0xffff范围内,因此 16 位灰色实现似乎是合适的)。