我正在尝试从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
}
我做错了什么?请帮我
draw.Draw(palettedImg,img.Bounds(),img,image.ZP)
- 参数不足。我尝试了draw.Draw(palettedImg,img.Bounds(),img,image.ZP, draw.Src)
,没有点,但是颜色不够丰富,渐变效果也很糟糕 https://prnt.sc/22s5lwh - frostrock777