45 lines
851 B
Go
45 lines
851 B
Go
package main
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// A naiive subset of what's in a .pixil file
|
|
type PixilFrame struct {
|
|
Active bool `json:"active"`
|
|
Preview string `json:"preview"`
|
|
}
|
|
type Pixil struct {
|
|
width int
|
|
height int
|
|
WidthString string `json:"width"`
|
|
HeightString string `json:"height"`
|
|
Frames []PixilFrame `json:"frames"`
|
|
}
|
|
|
|
func (p *Pixil) Parse() error {
|
|
var err error
|
|
|
|
p.width, err = strconv.Atoi(p.WidthString)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
p.height, err = strconv.Atoi(p.HeightString)
|
|
return err
|
|
}
|
|
|
|
func (frame *PixilFrame) GetPreview() []byte {
|
|
if !frame.Active {
|
|
return nil
|
|
}
|
|
if !strings.HasPrefix(frame.Preview, "data:image/png") {
|
|
return nil
|
|
}
|
|
png := strings.Split(frame.Preview, ",")[1]
|
|
preview, _ := base64.StdEncoding.DecodeString(png)
|
|
return preview
|
|
}
|