按照拍摄日期将图片分类到文件夹中

时间:2013-03-21 03:57:36

标签: c# sorting image

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

文件夹:2000

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

我该怎么做?

2 个答案:

答案 0 :(得分: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)
{
    ...
}

答案 1 :(得分:1)

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

使用PropertyItems时,此数据会自动读入Image.FromFile()数组。然后,您可以使用其他参考(like this one))来获取日期信息的正确代码。您还可以使用this library来简化阅读代码。

并非所有图片都会包含Exif数据,因此您可能希望将David的答案合并为后备。

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