我想製作按實際拍攝日期將照片分組爲文件夾的軟件。這些照片將整理與名稱的文件夾採取像今年:按照拍攝日期將照片分類到文件夾
文件夾:2000
裏面的文件夾:在2000年
我如何能做到這一點採取了一些照片?
我想製作按實際拍攝日期將照片分組爲文件夾的軟件。這些照片將整理與名稱的文件夾採取像今年:按照拍攝日期將照片分類到文件夾
文件夾:2000
裏面的文件夾:在2000年
我如何能做到這一點採取了一些照片?
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)
{
...
}
要得到照片實際拍攝的日期,您需要查看Exif數據。
當您使用Image.FromFile()
時,此數據將自動讀入PropertyItems
陣列。然後,您可以使用另一個參考(like this one)得到正確的代碼爲最新信息。你也可以使用this library方便閱讀的代碼。
並非所有圖片都會有Exif數據中,所以你可能要納入大衛的回答爲回退。
一旦你有相關的最新信息,您可以使用Directory.Create(year)
和File.Move(oldPath, newPath)
來組織文件。
感謝您的回答,但我想實際「排序」的文件作爲排序到文件夾中。比如文件移動什麼東西? – user2180617 2013-03-21 04:06:17
您使用「排序」這個詞是含糊不清的,我們無法排序,但是組合成排序是重新排序,但不是分組。 – David 2013-03-21 04:10:11
我試了一下,它的工作原理,但我不熟悉字典和List類,所以我真的不知道如何將文件分組到文件夾,但感謝新的答案。 – user2180617 2013-03-22 03:19:37