2013-04-11 2 views
1

У меня есть изображение без какого-либо имени, и я хочу сохранить это изображение в отдельной папке с именем по умолчанию (image1, image2 и т. Д.) На данный момент я использую этот код для ручного сохранения изображений.Автоматическое сохранение изображений в папке с именем пользователя

if (imageOpened == true) 
     { 
      SaveFileDialog sfd = new SaveFileDialog(); 
      sfd.Filter = "PNG Files(*.png)|*.png"; 

      if (sfd.ShowDialog() == DialogResult.OK) 
       imagePanelControl.SaveImage(sfd.FileName); 
     } 
     else 
      MessageBox.Show("Load a file before saving!"); 

     imagePanelControl.Invalidate(); 
    } 

Как я могу это сделать?

+0

Где оригинальное изображение происходит? (Есть в коробке с картинками?) – KF2

ответ

1

Давайте попробуем выяснить, что нам нужно: Во-первых, мы должны найти все файлы ведьмой соответствует маске «изображения {ONE или более Digit} .png», так:

Regex reg = new Regex(@"image(\d)+[.]"); 
var list = Directory.GetFiles(dir, "*.png").Where(path => reg.IsMatch(path)).ToList(); 

Проверьте, есть ли файл существует , если да, верните «image1.png», код: if (list.Count == 0) return "image1.png";

Последний шаг - найти последний номер, поэтому нам нужно удалить все из файлов в списке, кроме числа, заказать список и взять последний. Код выглядит следующим образом:

list.Select(x => (new FileInfo(x)).Name.Replace("image", "").Replace(".png", "")).OrderBy(x => x).Last(); 

Последний шаг - разобрать выше значения и добавить его. Конечный код:

 private static string GetNewFileName(string dir) 
     { 
      Regex reg = new Regex(@"image(\d)+[.]"); 

      var list = Directory.GetFiles(dir, "*.png").Where(path => reg.IsMatch(path)) 
        .ToList(); 

      if (list.Count == 0) 
       return "image1.png"; 

      var lastName = 
       list.Select(x => (new FileInfo(x)).Name.Replace("image", "").Replace(".png", "")).OrderBy(x => x).Last(); 

      return string.Format("image{0}.png", int.Parse(lastName)+1); 
     } 

;

Смежные вопросы