我正在尝试根据眼动仪结果创建热图(显示用户最常查看屏幕上的位置)。
对于用户经常查看的像素,我想设置不透明的红色、不太常见的橙色等。我使用红色到绿色的色标。但是对于频率最低的像素,我希望它们不仅显示绿色,还希望它们透明。
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 的图像:(透明)
alpha RGBA 值设置为 255 的图像:(不透明)

据我所知,我正在使用支持透明度的 png 图像。为什么会发生这种情况?有什么想法可以解决这个问题并使最不常见的像素看起来透明?
感谢您的每一个回答。
慕森卡
相关分类