尝试使用C#

时间:2015-07-23 22:07:41

标签: c# wpf metadata jpeg xmp

我们现在有几个人经历了数千个jpg的目录,并在Windows资源管理器中手动设置了标签元数据项。我想要一些东西,只需阅读他们从中获取标签并将其应用于文件的电子表格。

在我完成的研究中,似乎"标签" 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();

问题是关键字属性是只读集合。我找到了几个"线索"在写这个元数据时,但它们似乎都不起作用。它特别糟糕,因为如果我在notepad ++中打开文件,我可以看到存储元数据的确切位置,但是它们周围的xml标签的数量非常混乱,试图只是手动阻塞那里的东西赢了& #39;工作。有没有人有关于如何使用C#写入关键字jpg元数据的任何信息?

只是为了表明我真的尝试过,这里有一堆我尝试过的链接:

1 个答案:

答案 0 :(得分:1)

经过更多的谷歌搜索(关键词没有多大意义),我终于找到了另一个问题,告诉我们如何使用Windows API代码包:Is it possible to set/edit a file extended properties with Windows API Code Pack?

要获取代码包,请在VS中打开包管理器控制台并输入Install-Package WindowsAPICodePack

MS自己已经从MSDN的存档中提取了这个包,因此NuGet是获得它的唯一方法。这些数字比他们需要的数字要难50倍,特别是因为MSDN关于他们的属性系统的文章吹嘘它是如何在Windows中管理文件的未来。