登录
首页 >  Golang >  Go问答

Golang 生成 gif 动画从 png 图像

来源:stackoverflow

时间:2024-03-15 14:36:25 109浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Golang 生成 gif 动画从 png 图像》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我正在尝试从 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 生成 gif 动画从 png 图像》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>