mirror of
https://github.com/gen2brain/cam2ip.git
synced 2026-07-03 05:38:08 +00:00
38 lines
632 B
Go
38 lines
632 B
Go
//go:build !libjpeg
|
|
|
|
// Package image.
|
|
package image
|
|
|
|
import (
|
|
"bytes"
|
|
"image"
|
|
"io"
|
|
|
|
"github.com/gen2brain/jpegn"
|
|
)
|
|
|
|
// NewDecoder returns a new Decoder.
|
|
func NewDecoder(r io.Reader) *Decoder {
|
|
return &Decoder{r}
|
|
}
|
|
|
|
// Decoder struct.
|
|
type Decoder struct {
|
|
r io.Reader
|
|
}
|
|
|
|
// Decode decodes image from JPEG.
|
|
func (d Decoder) Decode() (image.Image, error) {
|
|
data, err := io.ReadAll(d.r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Some cameras emit MJPEG frames with leading bytes before the SOI marker.
|
|
if i := bytes.Index(data, []byte{0xFF, 0xD8}); i > 0 {
|
|
data = data[i:]
|
|
}
|
|
|
|
return jpegn.Decode(bytes.NewReader(data))
|
|
}
|