Advertisement
SHILY

Удаление изображений в заданной директории по заданным критериям

Apr 7th, 2021 (edited)
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.15 KB | None | 0 0
  1. //-----------------------------------------------------
  2. var pathFolder = @"C:\ZennoProjects\Testing\Images"; // путь к папке.
  3.  
  4. var extension = "jpg|jpeg|png";                      // расширение файлов (если переменную оставить пустой, то будут учтены все файлы).
  5.  
  6. var сonsiderFileSize = false;                       // true - учитывать размер файла; false - не учитывать размер файла.
  7. var size = 70;                                       // размер файла в килобайтах.
  8.  
  9. var width = 700;                                     // ширина в пикселях (если меньше 700, то файл будет удален).
  10. var height = 300;                                    // высота в пикселях (если меньше 300, то файл будет удален).
  11.  
  12. var searchOption = SearchOption.AllDirectories;      // TopDirectoryOnly - проход по заданной папке; AllDirectories - проход по заданной и вложенным папкам.
  13. //-----------------------------------------------------
  14.  
  15. var files = new List<string>();
  16.  
  17. if (!Directory.Exists(pathFolder)) return "Папки не существует";
  18.  
  19. files = string.IsNullOrWhiteSpace(extension) ? Directory.EnumerateFiles(pathFolder, "*", searchOption).ToList() :
  20.     Directory.EnumerateFiles(pathFolder, "*", searchOption).Where(x => Regex.IsMatch(Path.GetExtension(x).ToLower(), $@"\.({extension})$")).ToList();
  21.  
  22. Image image;
  23.  
  24. foreach (var file in files)
  25. {
  26.     var fileInfo = new FileInfo(file);
  27.    
  28.     try {image = Image.FromFile(fileInfo.FullName);} catch {continue;}
  29.    
  30.     switch (сonsiderFileSize)
  31.     {      
  32.         case true:
  33.             if (fileInfo.Length / 1024 <= size && image.Width < width || image.Height < height)
  34.             {
  35.                 image.Dispose();
  36.                
  37.                 try
  38.                 {
  39.                     fileInfo.Delete();
  40.                 }
  41.                 catch(Exception ex)
  42.                 {
  43.                     project.SendWarningToLog(ex.Message);
  44.                 }
  45.             }
  46.             break;
  47.         case false:
  48.             if (image.Width < width || image.Height < height)
  49.             {
  50.                 image.Dispose();
  51.                 try
  52.                 {
  53.                     fileInfo.Delete();
  54.                 }
  55.                 catch(Exception ex)
  56.                 {
  57.                     project.SendWarningToLog(ex.Message);
  58.                 }
  59.             }
  60.             break;
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement