2013-03-21 62 views
-1

我想製作按實際拍攝日期將照片分組爲文件夾的軟件。這些照片將整理與名稱的文件夾採取像今年:按照拍攝日期將照片分類到文件夾

文件夾:2000

裏面的文件夾:在2000年

我如何能做到這一點採取了一些照片?

回答

1
List<string> imageFiles= ... // Here you get the image path 
Dictionary<int, List<string>> groupedPaths= ... //output dict 
foreach(string str in imageFiles) 
{ 
    FileInfo fi=new FileInfo(str); 
    int year = fi.CreationTime.Year; 
    if(!groupedPath.ContainsKey(year)) 
    { 
     var list=new List<string>(); 
     list.Add(year, string); 
     groupedPaths.Add(year, list); 
    } 
    else 
    { 
     groupedPaths[year].Add(year, str); 
    } 
//Now you can process with foreach or use LINQ to group your images 
foreach(KeyValuePair<int, string> pair in groupedPaths) 
{ 
    ... 
} 
+0

感謝您的回答,但我想實際「排序」的文件作爲排序到文件夾中。比如文件移動什麼東西? – user2180617 2013-03-21 04:06:17

+1

您使用「排序」這個詞是含糊不清的,我們無法排序,但是組合成排序是重新排序,但不是分組。 – David 2013-03-21 04:10:11

+0

我試了一下,它的工作原理,但我不熟悉字典和List類,所以我真的不知道如何將文件分組到文件夾,但感謝新的答案。 – user2180617 2013-03-22 03:19:37

1

要得到照片實際拍攝的日期,您需要查看Exif數據。

當您使用Image.FromFile()時,此數據將自動讀入PropertyItems陣列。然後,您可以使用另一個參考(like this one)得到正確的代碼爲最新信息。你也可以使用this library方便閱讀的代碼。

並非所有圖片都會有Exif數據中,所以你可能要納入大衛的回答爲回退。

一旦你有相關的最新信息,您可以使用Directory.Create(year)File.Move(oldPath, newPath)來組織文件。