public void Execute(PipelineContext context, MagickImage magickImage) { ResolvedData maskFileInfo = context.DataResolver.ResolvedData("masks", context.ResolvedData, Config.Mask.Pattern); if (Config.Original) { PipelineContext contextClone = context.Clone(); contextClone.AppendPath(OriginalDirectory); contextClone.Next(magickImage); } if (maskFileInfo != null) { using (MagickImage maskMagickImage = maskFileInfo.ToMagickImage()) { magickImage.SetWriteMask(maskMagickImage); } } foreach (Modulation modulate in Config.Modulation) { using (MagickImage modulatedMagickImage = (MagickImage)magickImage.Clone()) { PipelineContext contextClone = context.Clone(); contextClone.AppendPath($"{modulate.Name}"); contextClone.AppendPrefix(modulate.Prefix ?? modulate.Name.Substring(0, 1)); modulatedMagickImage.Modulate(modulate.Brightness, modulate.Saturation, modulate.Hue); modulatedMagickImage.RemoveWriteMask(); contextClone.Next(modulatedMagickImage); } } }