image-storage/internal/convert/service.go
2025-10-22 21:34:17 +03:00

48 lines
893 B
Go

package convert
import (
"github.com/davidbyttow/govips/v2/vips"
"io"
)
type service struct{}
func newService() *service {
return &service{}
}
func (s *service) ConvertAndSave(imageData []byte, fullWriter, thumbWriter io.Writer) error {
img, err := vips.NewImageFromBuffer(imageData)
if err != nil {
return err
}
defer img.Close()
//force convert even it is already a jpeg image
converted, _, err := img.ExportJpeg(&vips.JpegExportParams{
StripMetadata: true,
Quality: 90,
})
if _, err = fullWriter.Write(converted); err != nil {
return err
}
if err = img.Thumbnail(300, 300, vips.InterestingNone); err != nil {
return err
}
thumbnail, _, err := img.ExportJpeg(&vips.JpegExportParams{
StripMetadata: true,
Quality: 80,
})
if err != nil {
return err
}
if _, err = thumbWriter.Write(thumbnail); err != nil {
return err
}
return nil
}