Esempio n. 1
0
        void ProcessLabeledImage(LabeledImage labeledImage)
        {
            ProcessedImageServer labeledAvImage = new ProcessedImageServer(labeledImage.Name,
                                                                           labeledImage.Label,
                                                                           labeledImage.ByteImage);

            _dispatcher.Post(() =>
            {
                Task t = new Task(() =>
                {
                    ProcessedImageCollection.Add(labeledAvImage);
                    _databaseMailbox.Post(labeledAvImage);
                    _processedImagesAmount++;
                    _addedNewProcessedImage.Set();

                    Console.Write($"[Ready {_processedImagesAmount}/{_newImagesAmount}]");
                    Console.WriteLine($" Image <{labeledAvImage.Name}> added into Database.");

                    if (_processedImagesAmount == _newImagesAmount)
                    {
                        _dispatcherCompletionEvent.Set();
                    }
                });
                t.Start();

                return(t);
            });
        }
Esempio n. 2
0
        void AddProcessedImagesFromDataBase(int[] processed_image_id, MyContext db)
        {
            Func <ProcessedImageDB, bool> func = a => IsIdInArray(a.ImageId, processed_image_id);
            var query = db.ProcessedImages.Include(a => a.AdditionalInfo).Where(func);

            foreach (var db_elem in query)
            {
                byte[] byte_image = db_elem.AdditionalInfo.First().ByteImage;
                ProcessedImageServer labeled_image = new ProcessedImageServer(db_elem.ImageName,
                                                                              db_elem.ImageLabel,
                                                                              byte_image);

                _dispatcher.Post(() =>
                {
                    Task t = new Task(() =>
                    {
                        ProcessedImageCollection.Add(labeled_image);
                        _processedImagesAmount++;
                        _addedNewProcessedImage.Set();

                        Console.Write($"[Ready {_processedImagesAmount}/{_newImagesAmount}]");
                        Console.WriteLine($" Image <{labeled_image.Name}> was inside Database.");
                        if (_processedImagesAmount == _newImagesAmount)
                        {
                            _dispatcherCompletionEvent.Set();
                        }
                    });
                    t.Start();

                    return(t);
                });
            }

            IsDatabaseBusy = false;
        }
Esempio n. 3
0
        async Task TryToGetAndSaveProcessedImagesHttpRequest()
        {
            var result = await MakeSafeHttpRequestAsync(() => _httpClient.GetAsync("processed_images"));

            var http_response_message = (HttpResponseMessage)result;

            if (http_response_message == null)
            {
                return;
            }

            string request_body = await http_response_message.Content.ReadAsStringAsync();

            List <ProcessedImageContracts> processed_images =
                JsonConvert.DeserializeObject <List <ProcessedImageContracts> >(request_body);

            foreach (var img in processed_images)
            {
                // why do we need incoding or not just pass raw data ???
                byte[] byte_img = Convert.FromBase64String(img.IncodedImageBase64);
                Bitmap bitmap   = _converter.AvaloniaBitmapFromByteImage(byte_img);
                AvaloniaUILabeledImage labeledAvImage = new AvaloniaUILabeledImage(img.Name, img.Label, bitmap);

                _processedImagesAmount++;
                _ = Dispatcher.UIThread.InvokeAsync(() =>
                {
                    ProcessedImageCollection.Add(labeledAvImage);
                    ProcessedImagesAmount += 0;
                });
            }

            Console.WriteLine($"Got images: {_processedImagesAmount}/{_totalAmountOfImagesInDirectory}");
        }
Esempio n. 4
0
 void ReactToSelectedIndexComboBox(object obj, PropertyChangedEventArgs e)
 {
     if ((e.PropertyName == nameof(SelectedIndexComboBoxProperty)) && (ProcessedImageCollection != null))
     {
         var query = ProcessedImageCollection.Where(x => x.Label == SelectedIndexComboBoxProperty);
         FilteredImageCollection = query.ToList <AvaloniaUILabeledImage>();
     }
 }
Esempio n. 5
0
        void RefreshCollection(object obj, NotifyCollectionChangedEventArgs e)
        {
            var query = ProcessedImageCollection.Where(x => x.Label == SelectedIndexComboBoxProperty);

            FilteredImageCollection = query.ToList <AvaloniaUILabeledImage>();
        }