Colors 使用颜色包从RGB值创建新颜色?
我正在尝试使用变量中的RGB值创建一个新的Colors 使用颜色包从RGB值创建新颜色?,colors,go,pixel,rgba,Colors,Go,Pixel,Rgba,我正在尝试使用变量中的RGB值创建一个新的颜色对象: 主程序包 进口( “fmt” “图像” _“图像/gif” _“图像/jpeg” _“图像/png” “操作系统” ) func main(){ reader,err:=os.Open(“test image.jpg”) 如果错误!=零{ fmt.Fprintf(os.Stderr,“%v\n”,错误) } 图像,错误:=图像。解码(读卡器) 如果错误!=零{ fmt.Fprintf(os.Stderr,“%s”,错误) } 边界:=im
颜色对象:
主程序包
进口(
“fmt”
“图像”
_“图像/gif”
_“图像/jpeg”
_“图像/png”
“操作系统”
)
func main(){
reader,err:=os.Open(“test image.jpg”)
如果错误!=零{
fmt.Fprintf(os.Stderr,“%v\n”,错误)
}
图像,错误:=图像。解码(读卡器)
如果错误!=零{
fmt.Fprintf(os.Stderr,“%s”,错误)
}
边界:=image.bounds()
对于i:=0;i图像/颜色
包中的类型具有导出字段,因此您可以直接实例化它们。例如,您可以使用以下方法创建颜色值:
grayColor := color.Gray16{Y: uint16(averaged)}
(红色
、绿色
和蓝色
值都在0..0xffff
范围内,因此16位灰色实现似乎是合适的)。图像。颜色实际上是一个接口。您可以使用满足它的任何结构。甚至您自己的结构
例如,您可以使用image.Gary:
grayColor := image.Gray{averaged}
或您自己的灰色:
type MyGray struct {
y uint32
}
func (gray *MyGray) FromRGBA(r, g, b, a uint32) {
gray.y = (r + g + b) / 3
}
func (gray *MyGray) RGBA() (r, g, b, a uint32) { // to satisfy image.Color
return gray.y, gray.y, gray.y, 1
}
grayColor := &MyGray{}
grayColor.FromRGBA(pixel.RGBA())
grayColor.RGBA()
// blablabla
Gray Gary令人困惑。不清楚这些是打字错误还是关于新颜色名称的笑话,但在任何情况下都会让人困惑。打字和复制粘贴错误。很抱歉!--!NP但仍有一个实例存在image.Gary
。
type MyGray struct {
y uint32
}
func (gray *MyGray) FromRGBA(r, g, b, a uint32) {
gray.y = (r + g + b) / 3
}
func (gray *MyGray) RGBA() (r, g, b, a uint32) { // to satisfy image.Color
return gray.y, gray.y, gray.y, 1
}
grayColor := &MyGray{}
grayColor.FromRGBA(pixel.RGBA())
grayColor.RGBA()
// blablabla