我想制作软件,按照实际拍摄的日期将图片分组到文件夹中。图片将分类为年份名称的文件夹,如:
文件夹:2000
文件夹内:2000年拍摄的一些照片。
我该怎么做?
答案 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)
来整理文件。