[TOC] ## image ### image.Rect 生成矩形 ``` image.Rect(0, 0, 500, 200) ``` ### image.NewAlpha / Alpha16 利用给定矩形边界产生一个alpha ``` func (p *Alpha) AlphaAt(x, y int) color.Alpha      //获取指定点的透明度 func (p *Alpha) At(x, y int) color.Color   //获取指定点的color(指定点的红绿蓝的透明度) func (p *Alpha) Bounds() Rectangle   //获取alpha的边界 func (p *Alpha) ColorModel() color.Model //获取alpha的颜色模型 func (p *Alpha) Opaque() bool      //检查alpha是否完全不透明 func (p *Alpha) PixOffset(x, y int) int   //获取指定像素相对于第一个像素的相对偏移量 func (p *Alpha) Set(x, y int, c color.Color) //设定指定位置的color func (p *Alpha) SetAlpha(x, y int, c color.Alpha)  //设定指定位置的alpha func (p *Alpha) SubImage(r Rectangle) Image   //获取p图像中被r覆盖的子图像,父图像和子图像公用像素 ``` ``` file, err := os.Create("test.jpeg") if err != nil { log.Fatal(err) } defer file.Close() alpha := image.NewAlpha(image.Rect(0, 0, dx, dy)) for x := 0; x < dx; x++ { for y := 0; y < dy; y++ { alpha.Set(x, y, color.Alpha{uint8(x % 256)}) //设定alpha图片的透明度 } } fmt.Println(alpha.At(400, 100)) //144 在指定位置的像素 fmt.Println(alpha.Bounds()) //(0,0)-(500,200) 图片边界 fmt.Println(alpha.Opaque()) //false,是否图片完全透明 fmt.Println(alpha.PixOffset(1, 1)) //501,指定点相对于第一个点的距离 fmt.Println(alpha.Stride) //500,两个垂直像素之间的距离 jpeg.Encode(file, alpha, nil) //将image信息写入文件中 ``` ### iamge.Gray 与Alpha完全相同 ### image.Point ``` func main() { pt := image.Point{X: 5, Y: 5} fmt.Println(pt) //(5,5) ,输出一个点位置(X,Y) fmt.Println(image.Pt(1, 2)) //(1,2) ,Pt输出一个点位置的简写形式 fmt.Println(pt.Add(image.Pt(1, 1))) //(6,6),两个点求和 fmt.Println(pt.String()) //(5,5) ,以字符串形式输出点 fmt.Println(pt.Eq(image.Pt(5, 5))) //true,判断两个点是否完全相等 fmt.Println(pt.In(image.Rect(0, 0, 10, 10))) //true,判断一个点是否在矩阵中 fmt.Println(pt.Div(2)) //(2,2),求点的商   fmt.Println(pt.Mul(2)) // (10,10),求点的乘积 fmt.Println(pt.Sub(image.Pt(1, 1))) // (4,4),求两个点的差fmt.Println(pt.Mod(image.Rect(9, 8, 10, 10))) // (9,9),dx=10-9=1,dy=10-8=2,9-5=4,4是1和2的倍数并且(9,9)在矩阵中 } ``` ### image.NewRGBA / image.NewRGBA64 生成rgb图 ``` func NewRGBA(r Rectangle) *RGBA func (p *RGBA) At(x, y int) color.Color func (p *RGBA) Bounds() Rectangle func (p *RGBA) ColorModel() color.Model func (p *RGBA) Opaque() bool func (p *RGBA) PixOffset(x, y int) int func (p *RGBA) Set(x, y int, c color.Color) func (p *RGBA) SetRGBA(x, y int, c color.RGBA) func (p *RGBA) SubImage(r Rectangle) Image ``` ``` func main() { file, err := os.Create("test.jpg") if err != nil { log.Fatal(err) } defer file.Close() rgba := image.NewRGBA(image.Rect(0, 0, dx, dy)) for x := 0; x < dx; x++ { for y := 0; y < dy; y++ { rgba.Set(x, y, color.NRGBA{uint8(x % 256), uint8(y % 256), 0, 255}) } } fmt.Println(rgba.At(400, 100)) //{144 100 0 255} fmt.Println(rgba.Bounds()) //(0,0)-(500,200) fmt.Println(rgba.Opaque()) //true,其完全透明 fmt.Println(rgba.PixOffset(1, 1)) //2004 fmt.Println(rgba.Stride) //2000 jpeg.Encode(file, rgba, nil) //将image信息存入文件中 } ``` ### color.RGBA 颜色色织 ``` // 最大值为255 ,对应颜色值 color.RGBA{46,100,181,100} ```