package pipelines import ( "github.com/disintegration/imaging" "image" ) type IExecutableStep interface { Execute(src image.Image) (image.Image, error) } // Resize image type ResizeImageStep struct { Step Options struct { Width int `json:"width"` Height int `json:"height"` Upscale bool `json:"upscale"` } `json:"options"` } func (s ResizeImageStep) Execute(src image.Image) (image.Image, error) { src = imaging.Resize(src, s.Options.Width, s.Options.Height, imaging.Linear) return src, nil } // Rotate image type RotateImageStep struct { Step Options struct { Angle float64 `json:"angle"` } `json:"options"` } func (s RotateImageStep) Execute(src image.Image) (image.Image, error) { src = imaging.Rotate(src, s.Options.Angle, image.Black) return src, nil }