gpt4 book ai didi

Golang 从 png 图像创建 gif 动画

转载 作者:行者123 更新时间:2023-12-05 05:51:46 24 4
gpt4 key购买 nike

我正在尝试从 png 图像创建 GIF 动画。但是我用颜色噪声得到它。截图:https://prnt.sc/22rrrfn

我尝试更改 Pallete.Plan9,因为 256 种颜色可能不够但没有得到好的结果。

func test() error {
fmt.Printf("Generating GIF")
files, err := ioutil.ReadDir("text")
if err != nil {
log.Fatal(err)
}
var filenames []string
for _, file := range files {
filenames = append(filenames, file.Name())
}

anim := gif.GIF{LoopCount: len(filenames)}
fmt.Println(anim.LoopCount)
for _, filename := range filenames {
reader, err := os.Open("text/" + filename)
if err != nil {
fmt.Println("Error Open dir")
}
defer reader.Close()

img, err := png.Decode(reader)
if err != nil {
fmt.Println("Error Decode")
}
bounds := img.Bounds()
drawer := draw.FloydSteinberg

palettedImg := image.NewPaletted(bounds, palette.Plan9)

drawer.Draw(palettedImg, img.Bounds(), img, image.ZP)
anim.Image = append(anim.Image, palettedImg)
anim.Delay = append(anim.Delay, 0)
}
output := fmt.Sprintf("FINAL.gif")
file, err := os.Create(output)
defer file.Close()
if err != nil {
fmt.Println("Error create file")
}
encodeErr := gif.EncodeAll(file, &anim)
if encodeErr != nil {
return fmt.Errorf("Unable to create file %s: %v", err)
}
return nil
}

我做错了什么?请帮忙

最佳答案

嗯,不完全确定,但是 drawer := draw.FloydSteinberg 使用 Floyd-Steinberg 抖动并且可能会创建这些工件。您是否尝试过只使用 draw.Draw

会换掉这个:

drawer := draw.FloydSteinberg

palettedImg:= image.NewPaletted(bounds, palette.Plan9)

drawer.Draw(palettedImg,img.Bounds(),img,image.ZP)

有了这个:

palettedImg:= image.NewPaletted(bounds, palette.Plan9)

draw.Draw(palettedImg,img.Bounds(),img,image.ZP)

然后看看它是什么样子。

关于Golang 从 png 图像创建 gif 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70327401/

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