image-storage/internal/convert/service.go

49 lines
893 B
Go
Raw Normal View History

2025-10-20 22:21:55 +03:00
package convert
2025-10-22 21:34:17 +03:00
import (
"github.com/davidbyttow/govips/v2/vips"
"io"
)
2025-10-20 22:21:55 +03:00
type service struct{}
func newService() *service {
return &service{}
}
2025-10-22 21:34:17 +03:00
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
}
2025-10-20 22:21:55 +03:00
return nil
}