padding.go 769 B

1234567891011121314151617181920212223242526
  1. package processing
  2. import (
  3. "github.com/imgproxy/imgproxy/v3/imagedata"
  4. "github.com/imgproxy/imgproxy/v3/imath"
  5. "github.com/imgproxy/imgproxy/v3/options"
  6. "github.com/imgproxy/imgproxy/v3/vips"
  7. )
  8. func padding(pctx *pipelineContext, img *vips.Image, po *options.ProcessingOptions, imgdata *imagedata.ImageData) error {
  9. if !po.Padding.Enabled {
  10. return nil
  11. }
  12. paddingTop := imath.ScaleToEven(po.Padding.Top, pctx.dprScale)
  13. paddingRight := imath.ScaleToEven(po.Padding.Right, pctx.dprScale)
  14. paddingBottom := imath.ScaleToEven(po.Padding.Bottom, pctx.dprScale)
  15. paddingLeft := imath.ScaleToEven(po.Padding.Left, pctx.dprScale)
  16. return img.Embed(
  17. img.Width()+paddingLeft+paddingRight,
  18. img.Height()+paddingTop+paddingBottom,
  19. paddingLeft,
  20. paddingTop,
  21. )
  22. }