0

我正在尝试使用 Taglib-Sharp 将元数据关键字添加到图像文件中。我的问题是以下代码:

image.ImageTag.Keywords = (string[])newTags.ToArray(typeof(string));
image.Save();

如果文件中没有关键字,则不执行任何操作。如果我在资源管理器中打开文件属性并首先手动添加标签,它就可以正常工作并将标签添加到文件中。

我试过在这个方法的顶部设置一个断点,我可以看到它image.ImageTag.Keywords的长度为零,就像它最初应该的那样,并且代码片段(string[])newTags.ToArray(typeof(string))确实成功返回了一个填充的字符串数组,但是在那一行之后,image.ImageTag.Keywords变量仍然有一个长度为零。

我完全被困在这里,如果我首先手动添加至少一个标签,一切都会很好。仅当文件中没有标签开始时才会出现此问题。

4

1 回答 1

0

好的,经过数小时的调试,我得出结论,这个问题是 TagLib 本身的一个错误。如果创建了一个新的图像文件并且该文件的 meta 关键字属性从未手动更改,那么 TagLib 似乎只是忽略设置image.ImageTag.Keywords数组并跳过它。为了让它更改文件中的关键字,我必须先手动向文件添加标签,然后将其删除。这会初始化文件本身中的标记属性,因此允许由 TagLib 设置它。如果从未初始化此属性,TagLib 将完全忽略尝试设置image.ImageTag.Keywords变量。

那么任何人都可以添加这个并告诉我是否有可能解决这个问题?

于 2016-02-16T01:09:43.830 回答