private IMagickImage ToNearBlackWhite(IMagickImage image)
        {
            IMagickImage result = image.Clone();

            if (GrayLimit == 0 && ColorFuzz == (Percentage)0)
            {
                return(result);
            }

            result.ColorFuzz = ColorFuzz;
            result.Opaque(MagickColors.White, new MagickColor("gray(" + (100 - GrayLimit) + "%)"));
            result.Opaque(MagickColors.Black, new MagickColor("gray(" + GrayLimit + "%)"));
            result.ColorFuzz = (Percentage)0;

            return(result);
        }
        private void RemoveNoise(IMagickImage image)
        {
            using (var second = image.Clone())
            {
                second.ColorSpace = ColorSpace.Gray;
                second.Negate();
                second.AdaptiveThreshold(FilterSize, FilterSize, FilterOffset);
                second.ContrastStretch((Percentage)0);

                if (SmoothingThreshold != null)
                {
                    second.Blur(SmoothingThreshold.Value.ToDouble() / 100, Quantum.Max);
                    second.Level(SmoothingThreshold.Value, new Percentage(100));
                }

                image.Composite(second, CompositeOperator.CopyAlpha);
            }

            image.Opaque(MagickColors.Transparent, BackgroundColor);
            image.Alpha(AlphaOption.Off);
        }
示例#3
0
        private void CopyOpacity(IMagickImage image)
        {
            image.Alpha(AlphaOption.Off);

            using (var gray = image.Clone())
            {
                gray.ColorSpace = ColorSpace.Gray;
                gray.Negate();
                gray.AdaptiveThreshold(FilterSize, FilterSize, FilterOffset);
                gray.ContrastStretch((Percentage)0);
                if (Threshold.HasValue)
                {
                    gray.Blur((double)Threshold.Value / 100.0, Quantum.Max);
                    gray.Level(Threshold.Value, new Percentage(100));
                }

                image.Composite(gray, CompositeOperator.CopyAlpha);
                image.Opaque(MagickColors.Transparent, BackgroundColor);
                image.Alpha(AlphaOption.Off);
            }
        }