2013-04-11 70 views
1

我沒有任何名稱的影像,我想直接保存此圖像與默認名稱的特定文件夾(圖像1,圖像2,依此類推......) 截至目前,我正在使用此代碼手動保存圖像。自動保存圖片到一個文件夾與用戶定義的名稱

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 2013-04-11 05:43:44

回答

1

讓我們試着找出我們需要的: 首先,我們需要找到巫匹配模式「圖像{一個或多個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); 
     } 

;

相關問題