add generateWatermarkUrl function