Beispiel #1
0
        public static NSImage Tint(this NSImage image, NSColor tint)
        {
            var colorGenerator = new CIConstantColorGenerator
            {
                Color = CIColor.FromCGColor(tint.CGColor)
            };

            var colorFilter = new CIColorControls
            {
                Image      = (CIImage)colorGenerator.ValueForKey(CIFilterOutputKey.Image),
                Saturation = 3f,
                Brightness = 0.35f,
                Contrast   = 1f
            };

            var monochromeFilter = new CIColorMonochrome
            {
                Image     = CIImage.FromCGImage(image.CGImage),
                Color     = CIColor.FromRgb(0.75f, 0.75f, 0.75f),
                Intensity = 1f
            };

            var compositingFilter = new CIMultiplyCompositing
            {
                Image           = (CIImage)colorFilter.ValueForKey(CIFilterOutputKey.Image),
                BackgroundImage = (CIImage)monochromeFilter.ValueForKey(CIFilterOutputKey.Image)
            };

            var outputImage = (CIImage)compositingFilter.ValueForKey(CIFilterOutputKey.Image);
            var extent      = outputImage.Extent;

            var newsize = Size.Truncate(extent.Size.ToEto());

            if (newsize.IsEmpty)
            {
                return(image);
            }

            var tintedImage = new NSImage(newsize.ToNS());

            tintedImage.LockFocus();
            try
            {
                var graphics  = NSGraphicsContext.CurrentContext.GraphicsPort;
                var ciContext = CIContext.FromContext(graphics, new CIContextOptions {
                    UseSoftwareRenderer = true
                });
                ciContext.DrawImage(outputImage, extent, extent);
            }
            finally
            {
                tintedImage.UnlockFocus();
            }

            var newrep = tintedImage.Representations()[0];

            newrep.Size      = image.Size;
            tintedImage.Size = image.Size;
            return(tintedImage);
        }
Beispiel #2
0
        public CIImage ColorMonochrome()
        {
            var inputColor = new CIColor(new CGColor(100F, 0F, 100F));               // Make it Purple R + B = Purple
            var monoChrome = new CIColorMonochrome()
            {
                Image     = flower,
                Color     = inputColor,
                Intensity = 1F,                 // Default 1
            };

            return(monoChrome.OutputImage);
        }
Beispiel #3
0
        public IEditableImage ToMonochrome()
        {
            var mono = new CIColorMonochrome {
                Color     = CIColor.FromRgb(1, 1, 1),
                Intensity = 1.0f,
                Image     = CIImage.FromCGImage(_image.CGImage)
            };
            CIImage output        = mono.OutputImage;
            var     context       = CIContext.FromOptions(null);
            var     renderedImage = context.CreateCGImage(output, output.Extent);
            var     monoImage     = UIImage.FromImage(renderedImage, _image.CurrentScale, _image.Orientation);

            _image.Dispose();
            _image = monoImage;

            monoImage = null;
            renderedImage.Dispose();
            renderedImage = null;

            return(this);
        }
		public CIImage ColorMonochrome ()
		{
			var inputColor = new CIColor (new CGColor (100F, 0F, 100F)); // Make it Purple R + B = Purple
			var monoChrome = new CIColorMonochrome ()
			{
				Image = flower,
				Color = inputColor,
				Intensity = 1F, // Default 1
			};
			
			return monoChrome.OutputImage;
		}
 void MonochromeExample()
 {
     var uiImage = new UIImage("Images/photo.jpg");
     CGImage image = uiImage.CGImage;
     var mono = new CIColorMonochrome
     {
         Color = CIColor.FromRgb(1, 1, 1),
         Intensity = 1.0f,
         Image = CIImage.FromCGImage(image)
     };
     DisplayFilterOutput(mono, ImageView);
 }