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

Go官网指南

练习原文

还记得之前编写的图片生成器吗?现在来另外编写一个,不过这次将会返回 image.Image 来代替 slice 的数据。

自定义的 Image 类型,要实现必要的方法,并且调用 pic.ShowImage。

Bounds 应当返回一个 image.Rectangle,例如 `image.Rect(0, 0, w, h)`。

ColorModel 应当返回 color.RGBAModel。

At 应当返回一个颜色;在这个例子里,在最后一个图片生成器的值 v 匹配 `color.RGBA{v, v, 255, 255}`。

关键信息

 // 1  先了解官方 image的结构
 
type Image interface {

	 /**颜色模式*/
	ColorModel() color.Model
	
	 /**图片边界*/
	Bounds() Rectangle
	
	 /**某个点的颜色*/
	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》后续部分

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值