2 回答

TA贡献2065条经验 获得超14个赞
golang stdlib 似乎缺少一种智能生成调色板的自动方法(如果我在这里错了,请纠正我)。但是似乎有一个提供您自己的 stub 的存根Quantizer,这使我参与了该gogif项目。(这是 的明显来源image.Gif。)
我能够MedianCutQuantizer从该项目中借用,定义如下:
https://github.com/andybons/gogif/blob/master/mediancut.go
结果如下:
var subimages []image.Image // RGBA, etc. images from somewhere else
outGif := &gif.GIF{}
for _, simage := range subimages {
bounds := simage.Bounds()
palettedImage := image.NewPaletted(bounds, nil)
quantizer := gogif.MedianCutQuantizer{NumColor: 64}
quantizer.Quantize(palettedImage, bounds, simage, image.ZP)
// Add new frame to animated GIF
outGif.Image = append(outGif.Image, palettedImage)
outGif.Delay = append(outGif.Delay, 0)
}
gif.EncodeAll(w, outGif)

TA贡献1993条经验 获得超6个赞
除了生成自己的调色板,您还可以使用预定义的 ( https://golang.org/pkg/image/color/palette/ )
...
palettedImage := image.NewPaletted(bounds, palette.Plan9)
draw.Draw(palettedImage, palettedImage.Rect, simage, bounds.Min, draw.Over)
...
- 2 回答
- 0 关注
- 529 浏览
添加回答
举报