如何在Go语言中创建透明的gif图片?

5

当我使用 Go 编码 gif 时,背景总是黑色的。如何使背景透明?

这里是我的 http handler 中的一些代码。(w 是 responseWriter)


(请注意,本翻译仅供参考,具体语境需要根据实际情况调整。)
m := image.NewRGBA(image.Rect(0, 0, pixelWidth, pixelHeight))
gif.Encode(w, m, &gif.Options{NumColors: 16}) 
1个回答

8
我查看了image/gif的源代码,发现你的调色板上必须有一个透明颜色。
var palette color.Palette = color.Palette{
    image.Transparent,
    image.Black,
    image.White,
    color.RGBA{0, 255, 0, 255},
    color.RGBA{0, 100, 0, 255},
}

m := image.NewPaletted(image.Rect(0, 0, pixelWidth, pixelHeight), palette)
gif.Encode(w, m, &gif.Options{}) 

2
请注意,可以通过使用自己的*image.Paletted作为要编码的图像(如所示),或者通过将gif.OptionsQuantizer字段设置为将透明颜色放入调色板的draw.Quantizer(可能在检测到图像中的任何透明度时)。当Quantizer字段为空时,默认值是使用没有透明度的静态调色板。 - Dave C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接