wallart-server/cmd/wallart-server/pixil.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
}