我们现在有几个人正在浏览数千个jpg文件的目录,并手动设置它们在Windows资源管理器中的标签元数据项。我想制作一些工具来读取他们从电子表格中获取的标签并将其应用于文件。
根据我的研究,Windows中的“标签”元数据实际上是“关键字”xmp元数据。我已成功使用以下代码读取此元数据:
问题在于Keywords属性是只读集合。我发现了一些关于写入此元数据的“线索”,但它们中没有一个似乎有效。这特别糟糕,因为如果我在notepad++中打开文件,我可以看到元数据存储的确切位置,但是围绕它们的xml标记数量太杂乱,以至于尝试手动将东西塞进去是行不通的。有人有关于如何使用C#在Windows中写入Keywords jpg元数据的信息吗?
只是为了证明我真的尝试过,这里有一堆我尝试使用的链接:
- MSDN thread - ASP.net thread
根据我的研究,Windows中的“标签”元数据实际上是“关键字”xmp元数据。我已成功使用以下代码读取此元数据:
FileStream fs = new FileStream(@"C:\test.jpg", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
BitmapSource img = BitmapFrame.Create(fs);
BitmapMetadata md = (BitmapMetadata)img.Metadata;
StringBuilder tags = new StringBuilder();
foreach (String s in md.Keywords)
{
tags.Append(s);
tags.Append(";");
}
String fin = tags.ToString();
问题在于Keywords属性是只读集合。我发现了一些关于写入此元数据的“线索”,但它们中没有一个似乎有效。这特别糟糕,因为如果我在notepad++中打开文件,我可以看到元数据存储的确切位置,但是围绕它们的xml标记数量太杂乱,以至于尝试手动将东西塞进去是行不通的。有人有关于如何使用C#在Windows中写入Keywords jpg元数据的信息吗?
只是为了证明我真的尝试过,这里有一堆我尝试使用的链接:
- MSDN thread - ASP.net thread