登录
首页 >  Golang >  Go问答

Golang使RGBA图像显示奇怪的颜色

来源:stackoverflow

时间:2024-04-23 13:36:35 279浏览 收藏

大家好,我们又见面了啊~本文《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图像显示奇怪的颜色》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>