将图像转换为图像。NRGBA

问题描述 投票:6回答:2

当我呼叫png.Decode(imageFile)时,它返回类型image.Image。但是我找不到找到将它转换为image.NRGBAimage.RGBA的方法,可以在其中调用诸如At()的方法。

我该如何实现?

image go
2个回答
5
投票

如果不需要“转换”图像类型,而只想从接口中提取基础类型,请使用“类型断言”:

if img, ok := i.(*image.RGBA); ok {
    // img is now an *image.RGBA
}

或使用类型开关:

switch i := i.(type) {
case *image.RGBA:
    // i in an *image.RGBA
case *image.NRGBA:
    // i in an *image.NRBGA
}

0
投票

标题中问题的解决方案,如何转换并将图像转换为image.NRGBA,可以找到in the Go Blog:诀窍是创建一个新的空白image.NRGBA,然后“绘制”将原始图像转换为NRGBA图像:

import "image/draw"

...

src := ...image to be converted...
b := src.Bounds()
m := image.NewRGBA(image.Rect(0, 0, b.Dx(), b.Dy()))
draw.Draw(m, m.Bounds(), src, b.Min, draw.Src)
© www.soinside.com 2019 - 2024. All rights reserved.