Files
overlord/Overlord-Client/cmd/agent/capture/jpeg_std.go
T

30 lines
533 B
Go

package capture
import (
"bytes"
"image"
"image/jpeg"
"sync"
)
var jpegBufPool = sync.Pool{
New: func() interface{} {
b := bytes.NewBuffer(make([]byte, 0, 128*1024))
return b
},
}
func encodeJPEG(img image.Image, quality int) ([]byte, error) {
buf := jpegBufPool.Get().(*bytes.Buffer)
buf.Reset()
err := jpeg.Encode(buf, img, &jpeg.Options{Quality: quality})
if err != nil {
jpegBufPool.Put(buf)
return nil, err
}
out := make([]byte, buf.Len())
copy(out, buf.Bytes())
jpegBufPool.Put(buf)
return out, nil
}