C#图像文件信息读取位置详细信息和日期

时间:2016-03-15 23:34:06

标签: c#

我有图像(Jpg,gif,png等..)本地硬盘。我需要读取所有文件信息,如位置详细信息纬度经度或位置名称和每张图像创建的照片。请帮助我如何阅读位置详细信息和日期。

这是我的C#代码,它不显示位置详细信息或创建日期

 string directory = (@"C:\Photos");
 var AllImages = Directory.GetFiles(directory, "*.jpg",
                                   SearchOption.AllDirectories)
                         .Select(Image.FromFile).ToList()

这是我的照片示例之一

enter image description here

1 个答案:

答案 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);