実際に撮影した日付ごとに写真をフォルダ分けするソフトを作りたいです。写真は、次のような撮影年名のフォルダーに分類されます。
フォルダ: 2000
フォルダ内:2000年撮影の写真。
どうやってやるの?
写真が実際に撮影された日付を取得するには、Exif データを調べます。
PropertyItems
このデータは、 を使用すると自動的に配列に読み込まれますImage.FromFile()
。次に、別の参照 (このようなもの)を使用して、日付情報の適切なコードを取得できます。このライブラリを使用して、コードの読み取りを簡素化することもできます。
すべての画像に 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)
{
...
}