forked from jshiffer/matterbridge
41 lines
742 B
Go
41 lines
742 B
Go
|
package libtgsconverter
|
||
|
|
||
|
import "image"
|
||
|
|
||
|
type imageWriter interface {
|
||
|
init(w uint, h uint, options ConverterOptions)
|
||
|
SupportsAnimation() bool
|
||
|
AddFrame(image *image.RGBA, fps uint) error
|
||
|
Result() []byte
|
||
|
}
|
||
|
|
||
|
func sameImage(a *image.RGBA, b *image.RGBA) bool {
|
||
|
if len(a.Pix) != len(b.Pix) {
|
||
|
return false
|
||
|
}
|
||
|
for i, v := range a.Pix {
|
||
|
if v != b.Pix[i] {
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func newImageWriter(extension string, w uint, h uint, options ConverterOptions) imageWriter {
|
||
|
var writer imageWriter
|
||
|
switch extension {
|
||
|
case "apng":
|
||
|
writer = &toapng{}
|
||
|
case "gif":
|
||
|
writer = &togif{}
|
||
|
case "png":
|
||
|
writer = &topng{}
|
||
|
case "webp":
|
||
|
writer = &towebp{}
|
||
|
default:
|
||
|
return nil
|
||
|
}
|
||
|
writer.init(w, h, options)
|
||
|
return writer
|
||
|
}
|