private void setupImage(ImageSource source, UIImageView target) { IImageSourceHandler handler = null; if (source is UriImageSource) { handler = new ImageLoaderSourceHandler(); } else if (source is FileImageSource) { handler = new FileImageSourceHandler(); } else if (source is StreamImageSource) { handler = new StreamImagesourceHandler(); } if (handler != null) { UIImage image = target.Image; if (image != null) { using (var context = CIContext.Create()) using (var inputImage = CIImage.FromCGImage(image.CGImage)) using (var filter = new CIGaussianBlur() { Image = inputImage, Radius = 15 }) using (var resultImage = context.CreateCGImage(filter.OutputImage, inputImage.Extent)) target.Image = new UIImage(resultImage); } } }
public async Task<bool> Recognise (CIImage image) { if (image == null) throw new ArgumentNullException ("image"); if (_busy) return false; _busy = true; try { return await Task.Run (() => { using (var blur = new CIGaussianBlur ()) using (var context = CIContext.Create ()) { blur.SetDefaults (); blur.Image = image; blur.Radius = 0; using (var outputCiImage = context.CreateCGImage (blur.OutputImage, image.Extent)) using (var newImage = new UIImage (outputCiImage)) { _api.Image = newImage; _api.Recognize (); return true; } } }); } finally { _busy = false; } }
public static UIImage Blur(this UIImage image, float radius) { if (image == null) return image; try { var imageToBlur = CIImage.FromCGImage(image.CGImage); if(imageToBlur == null) return image; var transform = new CIAffineClamp(); transform.Transform = CGAffineTransform.MakeIdentity(); transform.Image = imageToBlur; var gaussianBlurFilter = new CIGaussianBlur(); gaussianBlurFilter.Image = transform.OutputImage; gaussianBlurFilter.Radius = radius; if (context == null) context = CIContext.FromOptions(null); var resultImage = gaussianBlurFilter.OutputImage; var finalImage = UIImage.FromImage(context.CreateCGImage(resultImage, new RectangleF(PointF.Empty, image.Size)), 1, UIImageOrientation.Up); return finalImage; } catch (Exception ex) { Console.WriteLine(ex); return image; } }
public override void DidOrderIn (PresentationViewController presentationViewController) { var banana = Utils.SCAddChildNode (ContentNode, "banana", "Scenes.scnassets/banana/banana", 5); banana.Rotation = new SCNVector4 (1, 0, 0, -(float)(Math.PI / 2)); banana.RunAction (SCNAction.RepeatActionForever (SCNAction.RotateBy (0, NMath.PI * 2, 0, 1.5f))); banana.Position = new SCNVector3 (2.5f, 5, 10); var gaussianBlurFilter = new CIGaussianBlur () { Radius = 10 }; gaussianBlurFilter.SetDefaults (); banana.Filters = new CIFilter[] { gaussianBlurFilter }; banana = (SCNNode)banana.Copy (); ContentNode.AddChildNode (banana); banana.Position = new SCNVector3 (6, 5, 10); var pixellateFilter = new CIPixellate (); pixellateFilter.SetDefaults (); banana.Filters = new CIFilter[] { pixellateFilter }; banana = (SCNNode)banana.Copy (); ContentNode.AddChildNode (banana); banana.Position = new SCNVector3 (9.5f, 5, 10); var edgeWorkFilter = new CIEdgeWork (); edgeWorkFilter.SetDefaults (); banana.Filters = new CIFilter[] { edgeWorkFilter }; }
// https://gist.github.com/foxxjnm/e452f2aebc2f6a01874b public static UIImage Blur(this UIImage image, float blurRadius = 25f) { if (image != null) { // Create a new blurred image. var imageToBlur = new CIImage(image); var blur = new CIGaussianBlur(); blur.Image = imageToBlur; blur.Radius = blurRadius; var blurImage = blur.OutputImage; var context = CIContext.FromOptions(new CIContextOptions { UseSoftwareRenderer = false }); var cgImage = context.CreateCGImage(blurImage, new RectangleF(0f, 0f, (float)image.Size.Width, (float)image.Size.Height)); var newImage = UIImage.FromImage(cgImage); // Clean up imageToBlur.Dispose(); context.Dispose(); blur.Dispose(); blurImage.Dispose(); cgImage.Dispose(); return(newImage); } return(null); }
public override void DidOrderIn(PresentationViewController presentationViewController) { var banana = Utils.SCAddChildNode(ContentNode, "banana", "Scenes.scnassets/banana/banana", 5); banana.Rotation = new SCNVector4(1, 0, 0, -(float)(Math.PI / 2)); banana.RunAction(SCNAction.RepeatActionForever(SCNAction.RotateBy(0, NMath.PI * 2, 0, 1.5f))); banana.Position = new SCNVector3(2.5f, 5, 10); var gaussianBlurFilter = new CIGaussianBlur() { Radius = 10 }; gaussianBlurFilter.SetDefaults(); banana.Filters = new CIFilter[] { gaussianBlurFilter }; banana = (SCNNode)banana.Copy(); ContentNode.AddChildNode(banana); banana.Position = new SCNVector3(6, 5, 10); var pixellateFilter = new CIPixellate(); pixellateFilter.SetDefaults(); banana.Filters = new CIFilter[] { pixellateFilter }; banana = (SCNNode)banana.Copy(); ContentNode.AddChildNode(banana); banana.Position = new SCNVector3(9.5f, 5, 10); var filter = CIFilter.FromName("CIEdgeWork"); filter.SetDefaults(); banana.Filters = new CIFilter[] { filter }; }
void BlurImage(UIImageView imageView, UIImage image, float radius, float transitionDuration) { Task.Run(() => { using (var context = CIContext.Create()) using (var inputImage = CIImage.FromCGImage(image.CGImage)) using (var filter = new CIGaussianBlur() { Image = inputImage, Radius = radius }) using (var resultImage = context.CreateCGImage(filter.OutputImage, inputImage.Extent)) { var blurimage = new UIImage(resultImage); Device.BeginInvokeOnMainThread(() => { imageView.Hidden = false; if (transitionDuration > 0.0f) { UIView.Transition(imageView, transitionDuration, UIViewAnimationOptions.TransitionCrossDissolve, animation: () => { imageView.Image = blurimage; }, completion: null); } else { imageView.Image = blurimage; } }); } }); }
public static UIImage Blur(this UIImage image, float radius) { try { var imageToBlur = CIImage.FromCGImage(image.CGImage); var transform = new CIAffineClamp(); transform.Transform = CGAffineTransform.MakeIdentity(); transform.Image = imageToBlur; var gaussianBlurFilter = new CIGaussianBlur(); gaussianBlurFilter.Image = transform.OutputImage; gaussianBlurFilter.Radius = radius; if (context == null) { context = CIContext.FromOptions(null); } var resultImage = gaussianBlurFilter.OutputImage; var finalImage = UIImage.FromImage( context.CreateCGImage(resultImage, new RectangleF(PointF.Empty, image.Size)), 1, UIImageOrientation.Up); return(finalImage); } catch (Exception ex) { Console.WriteLine(ex); return(image); } }
public static UIImage CreateBlurImageFromView(UIView view) { var blurRadius = 2f; var _size = view.Bounds.Size; UIGraphics.BeginImageContext(_size); view.DrawViewHierarchy(view.Bounds, false); var viewImage = UIGraphics.GetImageFromCurrentImageContext(); // Blur Image var gaussianBlurFilter = new CIGaussianBlur(); gaussianBlurFilter.Image = CIImage.FromCGImage(viewImage.CGImage); gaussianBlurFilter.Radius = blurRadius; var resultImage = gaussianBlurFilter.OutputImage; var croppedImage = resultImage.ImageByCroppingToRect(new CGRect(blurRadius, blurRadius, _size.Width - 2 * blurRadius, _size.Height - 2 * blurRadius)); var transformFilter = new CIAffineTransform(); var affineTransform = CGAffineTransform.MakeTranslation(-blurRadius, blurRadius); transformFilter.Transform = affineTransform; transformFilter.Image = croppedImage; var transformedImage = transformFilter.OutputImage; return(new UIImage(transformedImage)); }
/// <summary> /// Creates a blurred version of our image in memory. /// </summary> /// <param name="image"></param> /// <returns></returns> public static UIImage Blur(this UIImage image) { if (image != null) { // Create a new blurred image. var beginImage = new CIImage(image); var blur = new CIGaussianBlur(); blur.Image = beginImage; blur.Radius = BLUR_RADIUS; var outputImage = blur.OutputImage; //var context = CIContext.FromOptions(null); var context = CIContext.FromOptions(new CIContextOptions() { UseSoftwareRenderer = true }); // CPU var cgImage = context.CreateCGImage(outputImage, new RectangleF(new PointF(0, 0), image.Size)); var newImage = UIImage.FromImage(cgImage); // Clear up some resources. beginImage = null; context = null; blur = null; outputImage = null; cgImage = null; return(newImage); } else { return(null); } }
CIImage Apply(CIImage input, BlurFilter filter) { var f = new CIGaussianBlur() { Image = input, Radius = filter.BlurRadius * 50, }; return(f.OutputImage); }
public static UIImage ToBlurred(UIImage source, float rad) { using (var context = CIContext.FromOptions(new CIContextOptions { UseSoftwareRenderer = false })) using (var inputImage = CIImage.FromCGImage(source.CGImage)) using (var filter = new CIGaussianBlur() { Image = inputImage, Radius = rad }) using (var resultImage = context.CreateCGImage(filter.OutputImage, inputImage.Extent)) { return new UIImage(resultImage); } }
private void addBulrFilterToWhiteCircle() { var blurFilter = new CIGaussianBlur(); blurFilter.SetDefaults(); blurFilter.Radius = 0; //blurFilter.SetValueForKey(0, new NSString("inputRadius") //if #available(iOS 10.0, *) { //blurFilter?.name = "blur" // } blurFilter.Radius = 30;//(30, forKey: "inputRadius") _blurWhiteCircleLayer.Filters = new CIFilter[] { blurFilter }; }
private static UIImage CreateBlurImage (UIImage image) { using (CIImage inputImage = new CIImage (image)) using (CIGaussianBlur blur = new CIGaussianBlur ()) using (CIContext context = CIContext.FromOptions (new CIContextOptions { UseSoftwareRenderer = false })) { blur.Image = inputImage; blur.Radius = 3; using (CIImage outputImage = blur.OutputImage) using (CIImage cgImage = context.CreateCGImage (outputImage, new CGRect (new CGPoint (0, 0), image.Size))) { return UIImage.FromImage (cgImage); } } }
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); } }
CIImage Apply(BlurFilter blurFilter, CIImage input, bool dirty) { if (blurFilter == null || !blurFilter.Active || !dirty) { return(null); } CIFilter filter = new CIGaussianBlur { Image = input, Radius = blurFilter.BlurRadius * 50, }; return(filter.OutputImage); }
private static UIImage CreateBlurImage(UIImage image) { using (CIImage inputImage = new CIImage(image)) using (CIGaussianBlur blur = new CIGaussianBlur()) using (CIContext context = CIContext.FromOptions(new CIContextOptions { UseSoftwareRenderer = false })) { blur.Image = inputImage; blur.Radius = 3; using (CIImage outputImage = blur.OutputImage) using (CIImage cgImage = context.CreateCGImage(outputImage, new CGRect(new CGPoint(0, 0), image.Size))) { return(UIImage.FromImage(cgImage)); } } }
public static UIImage ToBlurred(UIImage source, float rad) { using (var context = CIContext.FromOptions(new CIContextOptions { UseSoftwareRenderer = false })) using (var inputImage = CIImage.FromCGImage(source.CGImage)) using (var filter = new CIGaussianBlur() { Image = inputImage, Radius = rad }) using (var resultImage = context.CreateCGImage(filter.OutputImage, inputImage.Extent)) { return(new UIImage(resultImage)); } }
public static UIImage Blur(this UIImage image, float radius) { if (image == null) { return(null); } try { var imageToBlur = CIImage.FromCGImage(image.CGImage); if (imageToBlur == null) { return(image); } var transform = new CIAffineClamp { Transform = CGAffineTransform.MakeIdentity(), Image = imageToBlur }; var gaussianBlurFilter = new CIGaussianBlur { Image = transform.OutputImage, Radius = radius }; if (context == null) { context = CIContext.FromOptions(null); } var resultImage = gaussianBlurFilter.OutputImage; var finalImage = UIImage.FromImage(context.CreateCGImage(resultImage, new CGRect(CGPoint.Empty, image.Size)), 1, UIImageOrientation.Up); return(finalImage); } catch (Exception ex) { LogManager.Shared.Report(ex); return(image); } }
public async void Sample3Png() { await _api.Init("eng"); using (var stream = LoadSample("sample3.png")) using (var image = new CIImage(NSData.FromStream(stream))) using (var blur = new CIGaussianBlur()) using (var context = CIContext.Create()) { blur.SetDefaults(); blur.Image = image; blur.Radius = 0; using (var outputCiImage = context.CreateCGImage(blur.OutputImage, image.Extent)) using (var newImage = new UIImage(outputCiImage)) { var result = await((TesseractApi)_api).Recognise(newImage); Assert.IsTrue(result); Assert.AreEqual( "the quick brown fox\njumps over the lazy dog-\n\nTHE QUICK BROlLIN FOX\nJUMPS OVER THE LAZY DOG.\n\n", _api.Text); } } }
private static UIImage BlurImage(UIImage image, int blurRadius) { var beginImage = new CIImage(image); var blur = new CIGaussianBlur { Image = beginImage, Radius = blurRadius }; var outputImage = blur.OutputImage; var context = CIContext.FromOptions(new CIContextOptions() { UseSoftwareRenderer = true }); // Orignal ////var cgImage = context.CreateCGImage( ////outputImage, ////new CGRect(new CGPoint(0, 0), image.Size)); // Modified var cgImage = context.CreateCGImage( outputImage, new CGRect(new CGPoint(blurRadius, -blurRadius), image.Size)); var newImage = UIImage.FromImage(cgImage); // Clear up resources. beginImage = null; context = null; blur = null; outputImage = null; cgImage = null; return(newImage); }
/// <summary> /// Applies a Gaussian blur. /// </summary> /// <returns>The altered image.</returns> CIImage GaussianBlur () { var gaussian_blur = new CIGaussianBlur () { Image = clouds, Radius = 3f, }; return gaussian_blur.OutputImage; }
CIImage Apply(BlurFilter blurFilter, CIImage input, bool dirty) { if (blurFilter == null || !blurFilter.Active || !dirty) return null; CIFilter filter = new CIGaussianBlur { Image = input, Radius = blurFilter.BlurRadius * 50, }; return filter.OutputImage; }
public async Task<bool> Recognise (CIImage image) { CheckIfInitialized (); if (image == null) throw new ArgumentNullException ("image"); if (_busy) return false; _busy = true; try { return await Task.Run (() => { using (var blur = new CIGaussianBlur ()) using (var context = CIContext.Create ()) { blur.SetDefaults (); blur.Image = image; blur.Radius = 0; using (var outputCiImage = context.CreateCGImage (blur.OutputImage, image.Extent)) using (var newImage = new UIImage (outputCiImage)) { _size = newImage.Size; _api.Image = newImage; if (_rect.HasValue) { _api.Rect = new CGRect (_rect.Value.Left, _rect.Value.Top, _rect.Value.Width, _rect.Value.Height); } else { _api.Rect = new CGRect (0, 0, _size.Width, _size.Height); } _api.Recognize (); return true; } } }); } finally { _busy = false; } }
public async void Sample3Png () { await _api.Init ("eng"); using (var stream = LoadSample ("sample3.png")) using (var image = new CIImage (NSData.FromStream (stream))) using (var blur = new CIGaussianBlur ()) using (var context = CIContext.Create ()) { blur.SetDefaults (); blur.Image = image; blur.Radius = 0; using (var outputCiImage = context.CreateCGImage (blur.OutputImage, image.Extent)) using (var newImage = new UIImage (outputCiImage)) { var result = await ((TesseractApi)_api).Recognise (newImage); Assert.IsTrue (result); Assert.AreEqual ( "the quick brown fox\njumps over the lazy dog-\n\nTHE QUICK BROlLIN FOX\nJUMPS OVER THE LAZY DOG.\n\n", _api.Text); } } }