Add some options

This commit is contained in:
Milan Nikolic
2025-06-14 01:45:32 +02:00
parent fd5cb861cd
commit 7e4e58029a
15 changed files with 128 additions and 96 deletions

View File

@@ -10,18 +10,19 @@ import (
)
// NewEncoder returns a new Encoder.
func NewEncoder(w io.Writer) *Encoder {
return &Encoder{w}
func NewEncoder(w io.Writer, quality int) *Encoder {
return &Encoder{w, quality}
}
// Encoder struct.
type Encoder struct {
w io.Writer
w io.Writer
quality int
}
// Encode encodes image to JPEG.
func (e Encoder) Encode(img image.Image) error {
err := jpeg.Encode(e.w, img, &jpeg.Options{Quality: 75})
err := jpeg.Encode(e.w, img, &jpeg.Options{Quality: e.quality})
if err != nil {
return err
}

View File

@@ -11,19 +11,20 @@ import (
)
// NewEncoder returns a new Encoder.
func NewEncoder(w io.Writer) *Encoder {
return &Encoder{w}
func NewEncoder(w io.Writer, quality int) *Encoder {
return &Encoder{w, quality}
}
// Encoder struct.
type Encoder struct {
w io.Writer
w io.Writer
quality int
}
// Encode encodes image to JPEG.
func (e Encoder) Encode(img image.Image) error {
return jpegli.Encode(e.w, img, &jpegli.EncodingOptions{
Quality: 75,
Quality: e.quality,
ProgressiveLevel: 0,
ChromaSubsampling: image.YCbCrSubsampleRatio420,
DCTMethod: jpegli.DCTIFast,

View File

@@ -11,19 +11,20 @@ import (
)
// NewEncoder returns a new Encoder.
func NewEncoder(w io.Writer) *Encoder {
return &Encoder{w}
func NewEncoder(w io.Writer, quality int) *Encoder {
return &Encoder{w, quality}
}
// Encoder struct.
type Encoder struct {
w io.Writer
w io.Writer
quality int
}
// Encode encodes image to JPEG.
func (e Encoder) Encode(img image.Image) error {
return jpeg.Encode(e.w, img, &jpeg.EncoderOptions{
Quality: 75,
Quality: e.quality,
DCTMethod: jpeg.DCTIFast,
ProgressiveMode: false,
OptimizeCoding: false,

View File

@@ -24,11 +24,18 @@ func Rotate(img image.Image, angle int) image.Image {
return img
}
func Timestamp(img image.Image, format string) (image.Image, error) {
if format == "" {
format = "2006-01-02 15:04:05"
func Flip(img image.Image, dir string) image.Image {
switch dir {
case "horizontal":
img = transform.FlipH(img)
case "vertical":
img = transform.FlipV(img)
}
return img
}
func Timestamp(img image.Image, format string) (image.Image, error) {
dimg, ok := img.(draw.Image)
if !ok {
return img, fmt.Errorf("camera: %T is not a drawable image type", img)