Example #1
0
        ///////////////////////////////////////////////////////////////////////////
        // Use the Nokia Imaging SDK to apply a filter to a selected image

        private async void AppBarBtnEdit_Click(object sender, RoutedEventArgs e)
        {
            progressRing.IsEnabled = true;
            progressRing.IsActive = true;
            progressRing.Visibility = Visibility.Visible;

            // Create NOK Imaging SDK effects pipeline and run it
            var imageStream = new BitmapImageSource(originalBitmap.AsBitmap());
            using (var effect = new FilterEffect(imageStream))
            {
                var filter = new Lumia.Imaging.Adjustments.GrayscaleFilter();
                effect.Filters = new[] { filter };
                
                // Render the image to a WriteableBitmap.
                var renderer = new WriteableBitmapRenderer(effect, originalBitmap);
                editedBitmap = await renderer.RenderAsync();
                editedBitmap.Invalidate();
            }

            Image.Source = originalBitmap;

            Image.Visibility = Visibility.Collapsed;

           

            //Resizing the editedBitmap to 128x128
            var resized1 = editedBitmap.Resize(128, 128, Windows.UI.Xaml.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);

            //converting the editedBitmap to byte array
            byte[] edit_arr = resized1.ToByteArray();

            
            
            
            //obtaining the images folder
            StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            StorageFolder subfolder = await folder.GetFolderAsync("Images");
         
            
            //create list of all the files in the images folder
            var pictures = await subfolder.GetFilesAsync();
            
            

            double ldiff = 50;//least percentage difference for an image to be a match
            string dispText = "Try again";//default message to be displayed

            byte threshold = 124;
            
            //process through all images 
            foreach (var file in pictures)
            {
                
                if (file != null)
                {
                    // Use WriteableBitmapEx to easily load image from a stream
                    using (var stream = await file.OpenReadAsync())
                    {
                        listBitmap = await new WriteableBitmap(1, 1).FromStream(stream);
                        stream.Dispose();
                    }

                    //convert obtained image to byte array
                    byte[] list_arr = listBitmap.ToByteArray();


                    byte[] difference = new byte[edit_arr.Length];

                    //compare byte array of both the images
                    for (int i=0;i<list_arr.Length;i++)
                    {
                        difference[i] = (byte)Math.Abs(edit_arr[i]-list_arr[i]);
                    }


                    //calculate percentage difference
                    int differentPixels = 0;

                    foreach(byte b in difference )
                    {
                        if (b > threshold)
                            differentPixels++;
                    }

                    double percentage = (double)differentPixels / (double)list_arr.Length;
                    percentage = percentage * 100;
                    

                    if (percentage <= ldiff)
                    {
                        ldiff = percentage;
                        dispText =file.DisplayName;
                    }
                }
            }

            tb.Text = dispText;

            progressRing.IsEnabled = false;
            progressRing.IsActive = false;
            progressRing.Visibility = Visibility.Collapsed;


            tb.Visibility = Visibility.Visible;
            Image.Visibility = Visibility.Visible;
            

            var tmp = new RenderTargetBitmap();
            await tmp.RenderAsync(source);

            var buffer = await tmp.GetPixelsAsync();
            var width = tmp.PixelWidth;
            var height = tmp.PixelHeight;
            editedBitmap = await new WriteableBitmap(1, 1).FromPixelBuffer(buffer, width, height);

            AppBarBtnSpeech.IsEnabled = true;
            AppBarBtnSpeech.Visibility = Visibility.Visible;

            AppBarBtnSave.IsEnabled = true;


        }
Example #2
0
        ///////////////////////////////////////////////////////////////////////////
        // Use the Nokia Imaging SDK to apply a filter to a selected image

        private async void AppBarBtnEdit_Click(object sender, RoutedEventArgs e)
        {
            progressRing.IsEnabled  = true;
            progressRing.IsActive   = true;
            progressRing.Visibility = Visibility.Visible;

            // Create NOK Imaging SDK effects pipeline and run it
            var imageStream = new BitmapImageSource(originalBitmap.AsBitmap());

            using (var effect = new FilterEffect(imageStream))
            {
                var filter = new Lumia.Imaging.Adjustments.GrayscaleFilter();
                effect.Filters = new[] { filter };

                // Render the image to a WriteableBitmap.
                var renderer = new WriteableBitmapRenderer(effect, originalBitmap);
                editedBitmap = await renderer.RenderAsync();

                editedBitmap.Invalidate();
            }

            Image.Source = originalBitmap;

            Image.Visibility = Visibility.Collapsed;



            //Resizing the editedBitmap to 128x128
            var resized1 = editedBitmap.Resize(128, 128, Windows.UI.Xaml.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);

            //converting the editedBitmap to byte array
            byte[] edit_arr = resized1.ToByteArray();



            //obtaining the images folder
            StorageFolder folder    = Windows.ApplicationModel.Package.Current.InstalledLocation;
            StorageFolder subfolder = await folder.GetFolderAsync("Images");


            //create list of all the files in the images folder
            var pictures = await subfolder.GetFilesAsync();



            double ldiff    = 50;          //least percentage difference for an image to be a match
            string dispText = "Try again"; //default message to be displayed

            byte threshold = 124;

            //process through all images
            foreach (var file in pictures)
            {
                if (file != null)
                {
                    // Use WriteableBitmapEx to easily load image from a stream
                    using (var stream = await file.OpenReadAsync())
                    {
                        listBitmap = await new WriteableBitmap(1, 1).FromStream(stream);
                        stream.Dispose();
                    }

                    //convert obtained image to byte array
                    byte[] list_arr = listBitmap.ToByteArray();


                    byte[] difference = new byte[edit_arr.Length];

                    //compare byte array of both the images
                    for (int i = 0; i < list_arr.Length; i++)
                    {
                        difference[i] = (byte)Math.Abs(edit_arr[i] - list_arr[i]);
                    }


                    //calculate percentage difference
                    int differentPixels = 0;

                    foreach (byte b in difference)
                    {
                        if (b > threshold)
                        {
                            differentPixels++;
                        }
                    }

                    double percentage = (double)differentPixels / (double)list_arr.Length;
                    percentage = percentage * 100;


                    if (percentage <= ldiff)
                    {
                        ldiff    = percentage;
                        dispText = file.DisplayName;
                    }
                }
            }

            tb.Text = dispText;

            progressRing.IsEnabled  = false;
            progressRing.IsActive   = false;
            progressRing.Visibility = Visibility.Collapsed;


            tb.Visibility    = Visibility.Visible;
            Image.Visibility = Visibility.Visible;


            var tmp = new RenderTargetBitmap();
            await tmp.RenderAsync(source);

            var buffer = await tmp.GetPixelsAsync();

            var width  = tmp.PixelWidth;
            var height = tmp.PixelHeight;

            editedBitmap = await new WriteableBitmap(1, 1).FromPixelBuffer(buffer, width, height);

            AppBarBtnSpeech.IsEnabled  = true;
            AppBarBtnSpeech.Visibility = Visibility.Visible;

            AppBarBtnSave.IsEnabled = true;
        }