今年夏天我正在做一些Go圖像包和我的空閒時間練習。使用Image.Image或* image.RGBA的Set()方法
package main
import (
"os"
"image"
"image/png"
"image/color"
"log"
"fmt"
"reflect"
)
func main(){
file , err := os.OpenFile("C:/Sources/go3x3.png", os.O_RDWR, os.FileMode(0777))
if err != nil {
log.Fatal(err)
}
img , err := png.Decode(file)
if err != nil {
log.Fatal(err)
}
img.At(0,0).RGBA()
fmt.Println("type:", reflect.TypeOf(img))
m := image.NewRGBA(image.Rect(0, 0, 640, 480))
fmt.Println("type:", reflect.TypeOf(m))
m.Set(5, 5, color.RGBA{255, 0, 0, 255})
img.Set(0, 0, color.RGBA{136, 0, 21, 255})
}
這裏的問題是,當我註釋掉img.Set
運行它,我得到這樣的結果
type: *image.RGBA
type: *image.RGBA
,但是當它註釋掉我得到一個錯誤說
img.Set undefined (type image.Image has no field or method Set)
我假設我使用反射錯誤,我仍然完全掌握Go中的整個界面和類型定義。
該接口稍微好一些的版本已經作爲'draw.Image'存在。請參閱[我的答案](http://stackoverflow.com/a/30243259/55504)瞭解使用它的一種方法。 –
@DaveC啊是的。我要更新我的答案並讚揚你。 –