mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-30 01:28:08 -05:00
67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
//go:build enable_vips
|
|
|
|
package thumbnail
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/davidbyttow/govips/v2/vips"
|
|
"github.com/opencloud-eu/opencloud/services/thumbnails/pkg/errors"
|
|
)
|
|
|
|
// PngEncoder encodes to png
|
|
type PngEncoder struct{}
|
|
|
|
// Encode encodes to png format
|
|
func (e PngEncoder) Encode(w io.Writer, img interface{}) error {
|
|
m, ok := img.(*vips.ImageRef)
|
|
if !ok {
|
|
return errors.ErrInvalidType
|
|
}
|
|
|
|
buf, _, err := m.ExportPng(vips.NewPngExportParams())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = w.Write(buf)
|
|
return err
|
|
}
|
|
|
|
// Types returns the png suffix
|
|
func (e PngEncoder) Types() []string {
|
|
return []string{typePng}
|
|
}
|
|
|
|
// MimeType returns the mimetype for png files.
|
|
func (e PngEncoder) MimeType() string {
|
|
return "image/png"
|
|
}
|
|
|
|
// JpegEncoder encodes to jpg
|
|
type JpegEncoder struct{}
|
|
|
|
// Encode encodes to jpg
|
|
func (e JpegEncoder) Encode(w io.Writer, img interface{}) error {
|
|
m, ok := img.(*vips.ImageRef)
|
|
if !ok {
|
|
return errors.ErrInvalidType
|
|
}
|
|
|
|
buf, _, err := m.ExportJpeg(vips.NewJpegExportParams())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = w.Write(buf)
|
|
return err
|
|
}
|
|
|
|
// Types returns the jpg suffixes.
|
|
func (e JpegEncoder) Types() []string {
|
|
return []string{typeJpeg, typeJpg}
|
|
}
|
|
|
|
// MimeType returns the mimetype for jpg files.
|
|
func (e JpegEncoder) MimeType() string {
|
|
return "image/jpeg"
|
|
}
|