tsv*_*der 15 c# xmp jpeg exif metadata
我一直在寻找一种体面的方式来读取C#中JPEG文件的元数据(特别是日期),并且有点短暂.据我所知,现有信息显示如下代码;
BitmapMetadata bmd = (BitmapMetadata)frame.Metadata;
string a1 = (string)bmd.GetQuery("/app1/ifd/exif:{uint=36867}");
Run Code Online (Sandbox Code Playgroud)
但是在我的无知中,我不知道GetQuery()将返回什么位元数据,或者传递什么.
我想首先尝试读取XMP,如果XMP不存在则回退到EXIF.有一个简单的方法吗?
谢谢.
tsv*_*der 26
以下似乎很好地工作,但如果有什么不好的,我会感激任何评论.
public string GetDate(FileInfo f)
{
using(FileStream fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
BitmapSource img = BitmapFrame.Create(fs);
BitmapMetadata md = (BitmapMetadata)img.Metadata;
string date = md.DateTaken;
Console.WriteLine(date);
return date;
}
}
Run Code Online (Sandbox Code Playgroud)
我最近将我的长期开源Java库移植到.NET,它支持XMP,Exif,ICC,JFIF以及各种图像格式的更多类型的元数据.它肯定会实现你所追求的目标.
https://github.com/drewnoakes/metadata-extractor-dotnet
var directories = ImageMetadataReader.ReadMetadata(imagePath);
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDescription(ExifDirectoryBase.TagDateTime);
Run Code Online (Sandbox Code Playgroud)
该库还通过Adobe的Java XmpCore库的C#端口支持XMP数据.
https://github.com/drewnoakes/xmp-core-dotnet