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

本文关键字:分类 文件夹 照片 日期 | 更新日期: 2023-09-27 18:04:54

我想制作一个软件,按实际拍摄的日期将图片分组到文件夹中。这些照片将按照拍摄年份分类到文件夹中,比如:

文件夹:2000

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

我该怎么做呢?

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

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

当您使用Image.FromFile()时,该数据将自动读入PropertyItems数组。然后,您可以使用另一个引用(比如这个)来获得日期信息的正确代码。您还可以使用这个库来简化代码的阅读。

并不是所有的图像都有Exif数据,所以你可能想把David的回答作为备用。

一旦你有了相关的日期信息,你可以使用Directory.Create(year)File.Move(oldPath, newPath)来组织文件。

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)
{
    ...
}