2 回答
TA贡献1805条经验 获得超9个赞
这是另一种方法 - 使用类型断言来断言my_image具有SubImage方法。这适用于具有该方法的任何图像类型SubImage(除Uniform快速扫描外的所有图像)。这将返回Image一些未指定类型的另一个接口。
package main
import (
"fmt"
"image"
"image/jpeg"
"log"
"os"
)
func main() {
image_file, err := os.Open("somefile.jpeg")
if err != nil {
log.Fatal(err)
}
my_image, err := jpeg.Decode(image_file)
if err != nil {
log.Fatal(err)
}
my_sub_image := my_image.(interface {
SubImage(r image.Rectangle) image.Image
}).SubImage(image.Rect(0, 0, 10, 10))
fmt.Printf("bounds %v\n", my_sub_image.Bounds())
}
如果您想经常这样做,那么您可以SubImage使用接口创建一个新类型并使用它。
type SubImager interface {
SubImage(r image.Rectangle) image.Image
}
my_sub_image := my_image.(SubImager).SubImage(image.Rect(0, 0, 10, 10))
类型断言的常见警告适用 -,ok如果您不想恐慌,请使用该表单。
TA贡献1864条经验 获得超2个赞
因为image.Image没有方法SubImage。您需要使用类型断言来获取适当的image.*类型。
rgbImg := img.(image.RGBA)
subImg := rgbImg.SubImage(...)
- 2 回答
- 0 关注
- 214 浏览
添加回答
举报