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); }); }
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; }
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}"); }
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>(); } }
void RefreshCollection(object obj, NotifyCollectionChangedEventArgs e) { var query = ProcessedImageCollection.Where(x => x.Label == SelectedIndexComboBoxProperty); FilteredImageCollection = query.ToList <AvaloniaUILabeledImage>(); }