gpt4 book ai didi

go - 如何将 image.RGBA (image.Image) 转换为 image.Paletted?

转载 作者:IT王子 更新时间:2023-10-29 00:52:24 29 4
gpt4 key购买 nike

我正在尝试从一系列任意的非调色板图像创建动画 GIF。为了创建调色板图像,我需要以某种方式想出一个调色板。

// RGBA, etc. images from somewhere else
var frames []image.Image

outGif := &gif.GIF{}
for _, simage := range frames {
// TODO: Convert image to paletted image
// bounds := simage.Bounds()
// palettedImage := image.NewPaletted(bounds, ...)

// Add new frame to animated GIF
outGif.Image = append(outGif.Image, palettedImage)
outGif.Delay = append(outGif.Delay, 0)
}
gif.EncodeAll(w, outGif)

在 golang stdlib 中有没有简单的方法来完成这个?

最佳答案

似乎 golang stdlib 中缺少一种智能生成调色板的自动方法(如果我在这里错了请纠正我)。但是似乎有一个用于提供您自己的 Quantizer 的 stub ,这使我进入了 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)

关于go - 如何将 image.RGBA (image.Image) 转换为 image.Paletted?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850753/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com