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;
            }
        }
示例#3
0
        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;
            }
        }
示例#4
0
		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 };
		}
示例#5
0
        // 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);
        }
示例#6
0
        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 };
        }
示例#7
0
        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;
                                    }
                                });
                            }
            });
        }
示例#8
0
        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);
            }
        }
示例#9
0
        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));
        }
示例#10
0
        /// <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);
            }
        }
示例#11
0
        CIImage Apply(CIImage input, BlurFilter filter)
        {
            var f = new CIGaussianBlur()
            {
                Image  = input,
                Radius = filter.BlurRadius * 50,
            };

            return(f.OutputImage);
        }
示例#12
0
 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 };
        }
示例#14
0
		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));
                     }
             }
 }
示例#18
0
 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));
                 }
 }
示例#19
0
        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);
         }
     }
 }