当前位置: > > > > Golang使RGBA图像显示奇怪的颜色
来源:stackoverflow
2024-04-23 13:36:35
0浏览
收藏
大家好,我们又见面了啊~本文《Golang使RGBA图像显示奇怪的颜色》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~
问题内容
所以我按照某种模式逐像素制作一些 rgba 图像,然后将它们保存为 png,并注意到当 alpha 通道使用某些颜色更改时,当存储为 png 时,它会更改整个像素颜色。
我做了一个测试来显示当前发生的情况:
img := image.NewRGBA(image.Rect(0, 0, 250, 250)) for y := 0; y < height; y++ { for x := 0; x < width; x++ { f.Read(b) img.SetRGBA(x, y, color.RGBA{ 249, 214, 133, 255, }) } } var buff bytes.Buffer err := png.Encode(&buff, img) if err != nil { log.Println(err) return }
这将打印彩色图像#f9d685。但是,如果我将 alpha 更改为 200,它将打印另一个具有 #6844bc 和透明度的颜色,而不是使用其透明度打印原始颜色。
有办法解决这个问题吗?我相信这是因为我错过了一些东西,但无法真正弄清楚,也没有找到任何与我在 google/here 上发生的事情类似的东西。
解决方案
这个很简单:
go doc color.rgba
封装颜色 // 导入“image/color”
type RGBA struct { R, G, B, A uint8 }
rgba 代表传统的 32 位 alpha 预乘颜色,有 8 红色、绿色、蓝色和 alpha 的每个位。
alpha 预乘颜色分量 c 已按 alpha (a) 缩放,因此 具有有效值 0 <= c <= a。
您可能正在寻找 color.nrgba
。
(总是,真的总是,查阅所涉及类型和函数的文档。总是。)
理论要掌握,实操不能落!以上关于《Golang使RGBA图像显示奇怪的颜色》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注公众号吧!