Go指南練習_圖像


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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM