public static NSImage ToNSImage(this CMSampleBuffer sampleBuffer) { NSImage image; using (CVPixelBuffer pixelBuffer = sampleBuffer.GetImageBuffer() as CVPixelBuffer) { // Lock the base address pixelBuffer.Lock(CVPixelBufferLock.ReadOnly); using (CIImage cIImage = new CIImage(pixelBuffer)) { image = null; AutoResetEvent e = new AutoResetEvent(false); Xamarin.Forms.Device.BeginInvokeOnMainThread(delegate { NSCIImageRep rep = new NSCIImageRep(cIImage); image = new NSImage(rep.Size); image.AddRepresentation(rep); e.Set(); }); e.WaitOne(); } pixelBuffer.Unlock(CVPixelBufferLock.ReadOnly); } return(image); }
public static NSImage ToNSImage(this CIImage image, System.Drawing.SizeF size) { var imageRep = NSCIImageRep.FromCIImage(image); var nsImage = new NSImage(size); nsImage.AddRepresentation(imageRep); return(nsImage); }
public static NSImage ToFilter(NSImage source, CIFilter filter) { using (var inputImage = CIImage.FromCGImage(source.CGImage)) { filter.Image = inputImage; using (var resultImage = new NSCIImageRep(filter.OutputImage)) { var nsImage = new NSImage(resultImage.Size); nsImage.AddRepresentation(resultImage); return(nsImage); } } }
NSImage ImageFromSampleBuffer(CMSampleBuffer sampleBuffer) #endif { #if __IOS__ UIImage image; #else NSImage image; #endif Random r = new Random(); int flag = r.Next(); // Get the CoreVideo image using (CVPixelBuffer pixelBuffer = sampleBuffer.GetImageBuffer() as CVPixelBuffer) { // Lock the base address pixelBuffer.Lock(CVPixelBufferLock.ReadOnly); using (CIImage cIImage = new CIImage(pixelBuffer)) { #if __IOS__ image = new UIImage(cIImage); #else image = null; AutoResetEvent e = new AutoResetEvent(false); //e.WaitOne(); //Semaphore s = new Semaphore(1, 1); //s.WaitOne(); BeginInvokeOnMainThread(delegate { NSCIImageRep rep = new NSCIImageRep(cIImage); Debug.WriteLine(String.Format("({2}) NSCIImageRep: {0}x{1}", rep.Size.Width, rep.Size.Height, flag)); image = new NSImage(rep.Size); image.AddRepresentation(rep); //s.Release(); //Monitor.Exit(this); Debug.WriteLine(String.Format("({2}) NSImage: {0}x{1}", image.Size.Width, image.Size.Height, flag)); e.Set(); }); e.WaitOne(); //Monitor.Enter(this); //Monitor.Exit(this); //s.WaitOne(); //s.Release(); #endif } pixelBuffer.Unlock(CVPixelBufferLock.ReadOnly); } Debug.WriteLine(String.Format("({2}) Received NSImage: {0}x{1}", image.Size.Width, image.Size.Height, flag)); return(image); }
public static NSImage ToSepia(NSImage source) { using (var inputImage = CIImage.FromCGImage(source.CGImage)) using (var filter = new CISepiaTone() { Image = inputImage }) using (var resultImage = new NSCIImageRep(filter.OutputImage)) { var nsImage = new NSImage(resultImage.Size); nsImage.AddRepresentation(resultImage); return(nsImage); } }
public static NSImage ToBlurred(NSImage source, float rad) { using (var inputImage = CIImage.FromCGImage(source.CGImage)) using (var filter = new CIGaussianBlur() { Image = inputImage, Radius = rad }) using (var resultImage = new NSCIImageRep(filter.OutputImage)) { var nsImage = new NSImage(resultImage.Size); nsImage.AddRepresentation(resultImage); return(nsImage); } }
public static void Colourize(NSView control, Color color, Action drawAction) { var size = control.Frame.Size; var image = new NSImage(size); image.LockFocusFlipped(control.IsFlipped); drawAction(); image.UnlockFocus(); var ciImage = CIImage.FromData(image.AsTiff()); if (control.IsFlipped) { var realSize = control.ConvertSizeToBase(size); var affineTransform = new NSAffineTransform(); affineTransform.Translate(0, realSize.Height); affineTransform.Scale(1, -1); var filter1 = CIFilter.FromName("CIAffineTransform"); filter1.SetValueForKey(ciImage, CIInputImage); filter1.SetValueForKey(affineTransform, CIInputTransform); ciImage = filter1.ValueForKey(CIOutputImage) as CIImage; } var filter2 = CIFilter.FromName("CIColorControls"); filter2.SetDefaults(); filter2.SetValueForKey(ciImage, CIInputImage); filter2.SetValueForKey(new NSNumber(0.0f), CIInputSaturation); ciImage = filter2.ValueForKey(CIOutputImage) as CIImage; var filter3 = CIFilter.FromName("CIColorMatrix"); filter3.SetDefaults(); filter3.SetValueForKey(ciImage, CIInputImage); filter3.SetValueForKey(new CIVector(0, color.R, 0), CIInputRVector); filter3.SetValueForKey(new CIVector(color.G, 0, 0), CIInputGVector); filter3.SetValueForKey(new CIVector(0, 0, color.B), CIInputBVector); ciImage = filter3.ValueForKey(CIOutputImage) as CIImage; image = new NSImage(size); var rep = NSCIImageRep.FromCIImage(ciImage); image.AddRepresentation(rep); image.Draw(SD.PointF.Empty, new SD.RectangleF(SD.PointF.Empty, size), NSCompositingOperation.SourceOver, 1); /* Use this when implemented in maccore: * ciImage.Draw (SD.PointF.Empty, new SD.RectangleF (SD.PointF.Empty, size), NSCompositingOperation.SourceOver, 1); */ }
protected override NSImage Transform(NSImage sourceBitmap, string path, Work.ImageSource source, bool isPlaceholder, string key) { return(Helpers.MainThreadDispatcher.PostForResult <NSImage>(() => { using (var inputImage = CIImage.FromCGImage(sourceBitmap.CGImage)) using (var filter = new CIPhotoEffectMono() { Image = inputImage }) using (var resultImage = new NSCIImageRep(filter.OutputImage)) { var nsImage = new NSImage(resultImage.Size); nsImage.AddRepresentation(resultImage); return nsImage; } })); }
partial void addFrame(NSObject sender) { NSImage image; lock (this){ if (currentImage == null) { return; } var img = CIImage.FromImageBuffer(currentImage); Console.WriteLine(img); var imageRep = NSCIImageRep.FromCIImage(CIImage.FromImageBuffer(currentImage)); image = new NSImage(imageRep.Size); image.AddRepresentation(imageRep); } movie.AddImage(image, new QTTime(1, 10), attrs); movie.CurrentTime = movie.Duration; movieView.NeedsDisplay = true; }