透明像素颜色 - Go lang图像

时间:2016-04-13 10:31:06

标签: image go transparency

我试图通过眼动仪结果创建热图(显示屏幕上用户最常查看的位置)。

对于用户经常看的像素,我想设置不透明的红色,对于一些不太频繁的橙色等。 我使用红色到绿色的色阶。 但对于频率最低的像素,我希望它们不仅显示绿色,我希望它们是透明的。

imgfile, err := os.Open("unchanged.jpeg")
defer imgfile.Close()
if err != nil {
    fmt.Println(err.Error())
}

decodedImg, err := jpeg.Decode(imgfile)
img := image.NewRGBA(decodedImg.Bounds())

size := img.Bounds().Size()
for x := 0; x < size.X; x++ {
    for y := 0; y < size.Y; y++ {
        img.Set(x, y, decodedImg.At(x, y))
    }
}

// I change some pixels here with img.Set(...)

outFile, _ := os.Create("changed.png")
defer outFile.Close()
png.Encode(outFile, img)

问题在于,当我尝试使用img.Set(x, y, color.RGBA{85, 165, 34, 50})更改颜色时,根据旧颜色和新颜色,它实际上并没有将像素颜色设置为平均值,它只显示一些新的,奇怪的外观颜色。

alpha RGBA值设置为50的图像:(透明)

enter image description here

alpha RGBA值设置为255的图像:(不透明)

enter image description here

我使用png图像据我所知确实支持透明度。 为什么会这样?任何可以解决这个问题的想法,并使最不常见的像素显得透明?

感谢您的每一个答案。

0 个答案:

没有答案