private async void LoadSourceImagesToContainer() { //disable controls that can start this method or image processing and saving buttonLoadSourceImages.IsEnabled = false; buttonSave.IsEnabled = false; labelMessage.Content = (string)Application.Current.FindResource("loadingImagesMessage"); //start progress bar animation progressBar.Maximum = 100; progressBar.IsIndeterminate = true; //reset listbox and image source listBoxPreview.Resources["previewImages"] = null; images = null; renderPreviewImage(); images = new BitmapImageCollectionForXaml(); images = await Imaging.GetImages(textBoxSourcePath.Text, checkBoxUseSubdirectories.IsChecked.GetValueOrDefault()); listBoxPreview.Resources["previewImages"] = images; labelMessage.Content = images.Count.ToString() + " " + (string)Application.Current.FindResource("loadedImagesQuantityMessage"); //enable controls buttonLoadSourceImages.IsEnabled = true; buttonSave.IsEnabled = true; renderPreviewImage(); //reset progress bar animation progressBar.IsIndeterminate = false; }
public static async Task <BitmapImageCollectionForXaml> GetImages(string directoryPath, bool useSubDirectories) { BitmapImageCollectionForXaml images = new BitmapImageCollectionForXaml(); if (Directory.Exists(directoryPath)) { await Task.Run(() => ProcessDirectory(ref images, directoryPath, directoryPath, useSubDirectories)); } return(images); }
private static void ProcessDirectory(ref BitmapImageCollectionForXaml images, string directoryPath, string baseDirectoryPath, bool useSubDirectories) //separate method to use recurse { string[] fileEntries = Directory.GetFiles(directoryPath); foreach (string fileName in fileEntries) { ProcessFile(ref images, fileName, baseDirectoryPath); } if (useSubDirectories) { // recurse into subdirectories string[] subdirectoryEntries = Directory.GetDirectories(directoryPath); foreach (string subdirectory in subdirectoryEntries) { ProcessDirectory(ref images, subdirectory, baseDirectoryPath, useSubDirectories); } } }
private static void ProcessFile(ref BitmapImageCollectionForXaml images, string filePath, string baseDirectoryPath) { try { string ext = Path.GetExtension(filePath).ToLower(); ImageFiletypes ft; switch (ext) { case ".jpg": case ".jpeg": ft = ImageFiletypes.jpg; break; case ".png": ft = ImageFiletypes.png; break; case ".bmp": ft = ImageFiletypes.bmp; break; default: return; } string fnwe = Path.GetFileNameWithoutExtension(filePath); string s = Path.GetDirectoryName(filePath); string rp = s.Remove(s.IndexOf(baseDirectoryPath), baseDirectoryPath.Length); images.Add(new ImageFromFile(filePath, rp, fnwe, ft)); } catch (Exception) { } }