【发布时间】:2022-10-25 14:15:52
【问题描述】:
我有许多 png 图像,并希望将它们编码为 gif 动画。
这些 png 图像没有任何黑点,但 gif 结果有很多点。
g := new(gif.GIF)
frames := len(images)
g.Image = make([]*image.Paletted, frames)
g.Delay = make([]int, frames)
eg := errgroup.Group{}
var cl color.Palette = palette.Plan9
for k, img := range images {
img := img
k := k
eg.Go(func() error {
Paletted := image.NewPaletted(img.Bounds(), cl)
draw.FloydSteinberg.Draw(Paletted, img.Bounds(), img, image.Point{})
g.Image[k] = Paletted
g.Delay[k] = deply
return nil
})
}
if err := eg.Wait(); err != nil {
return nil, err
}
var buf bytes.Buffer
err := gif.EncodeAll(&buf, g)
我的PNG信息:
文件类型:PNG
文件类型扩展名: png
MIME 类型:图像/png
位深:8
颜色类型:带 Alpha 的 RGB
压缩:放气/充气
过滤器:自适应
隔行扫描:非隔行扫描
SRGB 渲染:感知
Exif 字节顺序:大端(摩托罗拉,MM)
色彩空间:sRGB使用 palgen.Generate(img, 256):
【问题讨论】: