feat: 新增APNG支持,添加SaveToApng方法并更新main.go以处理APNG精灵。
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"sort"
|
||||
|
||||
"github.com/HugoSmits86/nativewebp"
|
||||
"github.com/kettek/apng"
|
||||
)
|
||||
|
||||
// 设置为true启用调试日志
|
||||
@@ -959,3 +960,29 @@ func (b *NamedSpriteBoard) SaveToWebp(filename string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *NamedSpriteBoard) SaveToApng(filename string) error {
|
||||
frames, delays := b.RenderToAnimatedImage()
|
||||
if len(frames) == 0 {
|
||||
return errors.New("no frames to save")
|
||||
}
|
||||
apngData := apng.APNG{
|
||||
Frames: make([]apng.Frame, len(frames)),
|
||||
}
|
||||
for i, frame := range frames {
|
||||
apngData.Frames[i] = apng.Frame{
|
||||
Image: frame,
|
||||
DelayNumerator: uint16(delays[i]),
|
||||
DelayDenominator: 100,
|
||||
}
|
||||
}
|
||||
f, err := os.Create(filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
if err := apng.Encode(f, apngData); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user