-1

我想制作按实际拍摄日期将图片分组到文件夹中的软件。图片将分类到文件夹中,其名称如下:

文件夹:2000

文件夹内:2000年拍摄的一些照片。

我怎样才能做到这一点?

4

2 回答 2

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)
{
    ...
}
于 2013-03-21T04:02:50.423 回答
1

要获取照片的实际拍摄日期,您需要查看 Exif 数据。

当您使用时,此数据会自动读入PropertyItems数组Image.FromFile()。然后,您可以使用另一个参考(例如这个)来获取日期信息的正确代码。你也可以使用这个库来简化代码的阅读。

并非所有图像都有 Exif 数据,因此您可能希望将 David 的答案作为后备。

获得相关日期信息后,您可以使用Directory.Create(year)File.Move(oldPath, newPath)组织文件。

于 2013-03-21T04:07:03.463 回答