使用c#和元数据提取器

时间:2016-10-19 22:44:28

标签: c# metadata-extractor

我正在尝试使用Metadata Extractor dll从.tif文件中读取元数据,并且我不断收到FileIsNotFoundException。当我使用.jpeg文件尝试相同的代码时,它工作正常。

FileStream OriginalFile = new FileStream(FullPath, FileMode.Open, FileAccess.Read, FileShare.Read);
IEnumerable<MetadataExtractor.Directory> directories = ImageMetadataReader.ReadMetadata(OriginalFile);
foreach (var directory in directories)
    foreach (var tag in directory.Tags)
        Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

编辑:我重新安装了软件包,现在将XmpCore.dll放在我项目的packages文件夹中,但我仍然看到与以前相同的异常。适用于.jpeg和.psd文件。

Exception thrown when trying open a .tiff image

2 个答案:

答案 0 :(得分:0)

FileNotFoundException意味着您的FullPath不包含实际位于磁盘上的文件。

尝试添加:

Console.WriteLine(FullPath);
Console.WriteLine(File.Exists(FullPath));

还要仔细检查.tif和.tiff。

编辑您的屏幕截图显示丢失的文件为XmpCore.dll。将NuGet引用添加到MetadataExtractor后,您还应该选择XmpCore

以下是packages.config

的示例
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="MetadataExtractor" version="1.5.3" targetFramework="net45" />
  <package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
  <package id="XmpCore" version="1.2.2" targetFramework="net45" />
</packages>

确保您还拥有相关的项目参考。

使用上述packages.config构建新的.NET 4.5控制台项目后,bin/Debug文件夹如下所示:

enter image description here

packages文件夹的内容:

enter image description here

答案 1 :(得分:0)

I solved the exception by changing the Copy Local property to True for XmpCore under References in the Solution Explorer.