예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        public void Execute(PipelineContext context, MagickImage magickImage)
        {
            foreach (MagickGeometry dimensions in Config.Geometries)
            {
                using (MagickImage dimensionsMagickImage = (MagickImage)magickImage.Clone())
                {
                    PipelineContext contextClone = context.Clone();
                    contextClone.AppendPath(dimensions.ToString());

                    if (dimensions.Width < 0 || dimensions.Height < 0)
                    {
                        Logger.Fatal("The height and width of dimensions can not be negative.");
                    }

                    if (dimensions.Width == 0 && dimensions.Height == 0)
                    {
                        Logger.Fatal("Both height and width in the dimensions configuration were 0, please specify at least one.");
                    }

                    dimensionsMagickImage.FilterType = Config.Filter;
                    dimensionsMagickImage.Resize(dimensions);

                    contextClone.Next(dimensionsMagickImage);
                }
            }
        }