Procházet zdrojové kódy

Fix relative watermark offsets when watermark is replicated

DarthSim před 1 rokem
rodič
revize
8cb93f8915
1 změnil soubory, kde provedl 13 přidání a 2 odebrání
  1. 13 2
      processing/watermark.go

+ 13 - 2
processing/watermark.go

@@ -40,8 +40,19 @@ func prepareWatermark(wm *vips.Image, wmData *imagedata.ImageData, opts *options
 	}
 	}
 
 
 	if opts.Replicate {
 	if opts.Replicate {
-		offX := int(math.RoundToEven(opts.Gravity.X * offsetScale))
-		offY := int(math.RoundToEven(opts.Gravity.Y * offsetScale))
+		var offX, offY int
+
+		if math.Abs(opts.Gravity.X) >= 1.0 {
+			offX = imath.RoundToEven(opts.Gravity.X * offsetScale)
+		} else {
+			offX = imath.ScaleToEven(imgWidth, opts.Gravity.X)
+		}
+
+		if math.Abs(opts.Gravity.Y) >= 1.0 {
+			offY = imath.RoundToEven(opts.Gravity.Y * offsetScale)
+		} else {
+			offY = imath.ScaleToEven(imgHeight, opts.Gravity.Y)
+		}
 
 
 		po.Padding.Enabled = true
 		po.Padding.Enabled = true
 		po.Padding.Left = offX / 2
 		po.Padding.Left = offX / 2