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); }
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); } }