环境
go version go1.10.1 darwin/amd64
图像
image 包定义了 Image 接口:
package image
type Image interface {
ColorModel() color.Model
Bounds() Rectangle
At(x, y int) color.Color
}
注意: Bounds 方法的返回值 Rectangle 实际上是一个 image.Rectangle, 它在 image 包中声明。
color.Color 和 color.Model 类型也是接口,但是通常因为直接使用预定义的实现 image.RGBA 和 image.RGBAModel 而被忽视了。这些接口和类型由image/color包定义。
下面看下具体该如何使用
package main
import (
"fmt"
"image"
)
func main() {
m := image.NewRGBA(image.Rect(0, 0, 100, 100))
fmt.Println(m.Bounds())
fmt.Println(m.At(0, 0).RGBA())
}
练习:图像
还记得之前编写的图片生成器吗?我们再来编写另外一个,不过这次它将会返回一个 image.Image 的实现而非一个数据切片。
定义自己的 Image 类型,实现必要的方法并调用 pic.ShowImage 。
- Bounds 应当返回一个 image.Rectangle ,例如 `image.Rect(0, 0, w, h)` 。
- ColorModel 应当返回 color.RGBAModel 。
- At 应当返回一个颜色。上一个图片生成器的值 v 对应 `color.RGBA{v, v, 255, 255}` 。
实例演示如下
package main
import "golang.org/x/tour/pic"
import "image"
import "image/color"
type Image struct{}
func (m Image) ColorModel() color.Model {
return color.RGBAModel
}
func (m Image) Bounds() image.Rectangle {
return image.Rect(0, 0, 50, 100)
}
func (m Image) At(x, y int) color.Color {
return color.RGBA{200, 200, 255, 255}
}
func main() {
m := Image{}
pic.ShowImage(m)
}
运行后输出的结果如下
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。