• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go指南练习_图像

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

https://tour.go-zh.org/methods/25

一、题目描述

还记得之前编写的图片生成器吗?我们再来编写另外一个,不过这次它将会返回一个 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}

 

二、题目分析

image 包定义了 Image 接口:

package image

type Image interface {
    ColorModel() color.Model  //颜色模式
    Bounds() Rectangle  //图片边界
    At(x, y int) color.Color  //图像上某个点的颜色
}

*注意:* Bounds 方法的返回值 Rectangle 实际上是一个 image.Rectangle,它在 image 包中声明。

了解官方的Image包的结构后,接下来就可以自己写方法。

 

三、Go代码

package main

import (
    "golang.org/x/tour/pic"
    "image/color"
    "image"
)

type Image struct{}  //新建一个Image结构体

func (i Image) ColorModel() color.Model{  //实现Image包中颜色模式的方法
    return color.RGBAModel
}

func (i Image) Bounds() image.Rectangle{  //实现Image包中生成图片边界的方法
    return image.Rect(0,0,200,200)
}

func (i Image) At(x,y int) color.Color{  //实现Image包中生成图像某个点的方法
    return color.RGBA{uint8(x),uint8(y),uint8(255),uint8(255)}
}

func main() {
    m := Image{}
    pic.ShowImage(m)  //调用
}

 

 

四、参考资料

https://linkscue.com/2018/02/28/go-tour-practice-image/

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言Revel框架的聊天室示例解读发布时间:2022-07-10
下一篇:
Go语言完整解析Go!Go!Go!(一)数据类型之Channel&Goroutine发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap