我有图像(Jpg,gif,png等..)本地硬盘。我需要读取所有文件信息,如位置详细信息纬度经度或位置名称和每张图像创建的照片。请帮助我如何阅读位置详细信息和日期。
这是我的C#代码,它不显示位置详细信息或创建日期
string directory = (@"C:\Photos");
var AllImages = Directory.GetFiles(directory, "*.jpg",
SearchOption.AllDirectories)
.Select(Image.FromFile).ToList()
这是我的照片示例之一
答案 0 :(得分:2)
您要查找的关键字是图片元数据,或EXIF data。您可以从Image.PropertyItems
属性中读取原始数据并手动解析,也可以使用外部库为您完成工作。
我建议ExifLib - 它是一个非常基本但功能强大的库,用于读取EXIF数据。这是一个例子:
// Instantiate the reader
using (ExifReader reader = new ExifReader(@"C:\temp\testImage.jpg"))
{
// Extract the tag data using the ExifTags enumeration
DateTime datePictureTaken;
if (reader.GetTagValue<DateTime>(ExifTags.DateTimeDigitized, out datePictureTaken))
{
// Do whatever is required with the extracted information
MessageBox.Show(this, string.Format("The picture was taken on {0}",
datePictureTaken), "Image information", MessageBoxButtons.OK);
}
}
元数据提取器dotnet
正如其他人所提到的,另一种方法是使用metadata extractor的dotnet版本。
检索时间戳的示例:
var directories = ImageMetadataReader.ReadMetadata(fileStream);
var directory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
return directory?.GetDateTime(ExifDirectoryBase.TagDateTimeOriginal);