Go基础学习记录 - Go指南 - 图像

{app.params.name}}{app.params.name}}{app.params.name}}

环境

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)
}


运行后输出的结果如下
Gowhich  

版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/32


版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/32