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 }