public static async Task <Tuple <ImageSource, ImageSource> > GetImageAndBlurredCopyFromPixelDataAsync([NotNull] IBuffer buffer, int blur)
        {
            // Check if the input is valid
            if (buffer.Length == 0)
            {
                return(null);
            }

            // Apply the blur effect on a copy of the original image
            using (Stream imageStream = buffer.AsStream())
                using (IRandomAccessStream randomImageStream = imageStream.AsRandomAccessStream())
                {
                    // Load the default image
                    BitmapImage original = new BitmapImage();
                    await original.SetSourceAsync(randomImageStream);

                    // Blur the copy of the image
                    randomImageStream.Seek(0);
                    using (RandomAccessStreamImageSource imageProvider = new RandomAccessStreamImageSource(randomImageStream))
                        using (BlurEffect blurEffect = new BlurEffect(imageProvider)
                        {
                            KernelSize = blur
                        })
                        {
                            // Process the blurred image
                            WriteableBitmap blurred = new WriteableBitmap((int)original.PixelWidth, (int)original.PixelHeight);
                            await blurEffect.GetBitmapAsync(blurred, OutputOption.Stretch);

                            // Return the two images
                            return(Tuple.Create <ImageSource, ImageSource>(original, blurred));
                        }
                }
        }
 public static async Task <ImageSource> BlurImageAsync([NotNull] IBuffer buffer, int blur)
 {
     using (Stream imageStream = buffer.AsStream())
         using (IRandomAccessStream randomImageStream = imageStream.AsRandomAccessStream())
         {
             BitmapDecoder decoder;
             try
             {
                 decoder = await BitmapDecoder.CreateAsync(randomImageStream);
             }
             catch
             {
                 // Invalid image data
                 return(null);
             }
             randomImageStream.Seek(0);
             using (RandomAccessStreamImageSource imageProvider = new RandomAccessStreamImageSource(randomImageStream))
                 using (BlurEffect blurEffect = new BlurEffect(imageProvider)
                 {
                     KernelSize = blur
                 })
                 {
                     WriteableBitmap blurred = new WriteableBitmap((int)decoder.PixelWidth, (int)decoder.PixelHeight);
                     return(await blurEffect.GetBitmapAsync(blurred, OutputOption.Stretch));
                 }
         }
 }