Provide actual ctx and processing options to watermark.Get in applyWatermark

This commit is contained in:
DarthSim
2025-09-05 18:22:56 +03:00
parent 37a6ea2bf7
commit 11a17aea33
2 changed files with 20 additions and 8 deletions

View File

@@ -488,9 +488,7 @@ func transformAnimated(
dprScale = 1.0
}
if err = applyWatermark(
img, watermark, &po.Watermark, dprScale, framesCount,
); err != nil {
if err = applyWatermark(ctx, img, watermark, po, dprScale, framesCount); err != nil {
return err
}
}

View File

@@ -80,12 +80,19 @@ func prepareWatermark(wm *vips.Image, wmData imagedata.ImageData, opts *options.
return wm.StripAll()
}
func applyWatermark(img *vips.Image, watermark auximageprovider.Provider, opts *options.WatermarkOptions, offsetScale float64, framesCount int) error {
func applyWatermark(
ctx context.Context,
img *vips.Image,
watermark auximageprovider.Provider,
po *options.ProcessingOptions,
offsetScale float64,
framesCount int,
) error {
if watermark == nil {
return nil
}
wmData, _, err := watermark.Get(context.Background(), nil)
wmData, _, err := watermark.Get(ctx, po)
if err != nil {
return err
}
@@ -94,6 +101,8 @@ func applyWatermark(img *vips.Image, watermark auximageprovider.Provider, opts *
}
defer wmData.Close()
opts := po.Watermark
wm := new(vips.Image)
defer wm.Clear()
@@ -101,7 +110,7 @@ func applyWatermark(img *vips.Image, watermark auximageprovider.Provider, opts *
height := img.Height()
frameHeight := height / framesCount
if err := prepareWatermark(wm, wmData, opts, width, frameHeight, offsetScale, framesCount); err != nil {
if err := prepareWatermark(wm, wmData, &opts, width, frameHeight, offsetScale, framesCount); err != nil {
return err
}
@@ -174,10 +183,15 @@ func applyWatermark(img *vips.Image, watermark auximageprovider.Provider, opts *
return nil
}
func watermark(pctx *pipelineContext, img *vips.Image, po *options.ProcessingOptions, imgdata imagedata.ImageData) error {
func watermark(
pctx *pipelineContext,
img *vips.Image,
po *options.ProcessingOptions,
imgdata imagedata.ImageData,
) error {
if !po.Watermark.Enabled || pctx.watermarkProvider == nil {
return nil
}
return applyWatermark(img, pctx.watermarkProvider, &po.Watermark, pctx.dprScale, 1)
return applyWatermark(pctx.ctx, img, pctx.watermarkProvider, po, pctx.dprScale, 1)
}