Go指南练习之《图片》(Images)

2019-04-15 14:09发布

Go官网指南

练习原文

还记得之前编写的图片生成器吗?现在来另外编写一个,不过这次将会返回 image.Image 来代替 slice 的数据。 自定义的 Image 类型,要实现必要的方法,并且调用 pic.ShowImage。 Bounds 应当返回一个 image.Rectangle,例如 `image.Rect(0, 0, w, h)`。 ColorModel 应当返回 color.RGBAModel。 At 应当返回一个颜 {MOD};在这个例子里,在最后一个图片生成器的值 v 匹配 `color.RGBA{v, v, 255, 255}`。

关键信息

// 1 先了解官方 image的结构 type Image interface { /**颜 {MOD}模式*/ ColorModel() color.Model /**图片边界*/ Bounds() Rectangle /**某个点的颜 {MOD}*/ At(x, y int) color.Color } // 2 重点是实现 Image的方法,这样就可以自己使用了

代码

package main import ( "golang.org/x/tour/pic" "image" "image/color" ) // 1 新建构造体 type Image struct{} // 2 实现官方image的三个方法 func (i Image) ColorModel() color.Model { return color.RGBAModel } func (i Image) Bounds() image.Rectangle { // 这里的200(宽 高)我写死了 仅仅是展示作用 正确做法是从 i 中获取 return image.Rect(0, 0, 200, 200) } func (i Image) At(x, y int) color.Color { return color.RGBA{uint8(x), uint8(y), uint8(255), uint8(255)} } func main() { // 可以自己设置宽高,传递进去 m := Image{} // 3 调用 pic.ShowImage(m) }

运行结果

这里写图片描述

PS

真实效果

方式一

使用在线在线编译器,吧上面代码拷贝进去
在这里插入图片描述

方式二

本地操作显示图片,请参考Go指南练习之《slice》后续部分