Magick.NET无法读取Exif标签

时间:2014-06-18 11:31:45

标签: .net vb.net image imagemagick exif

我正在尝试使用 Magick.NET 库的this example来读取图片中的Exif信息,但是当我尝试迭代Exif值时,我得到了一个未处理的错误:

  

发生了'System.ArgumentException'类型的未处理异常   Magick.NET-AnyCPU.dll

     

其他信息:La matriz de origen no es suficientemente   拉尔加。 Compruebe srcIndex,la longitudinal y loslímitesinferioresde la   matriz。

     

(英文:源数组不够长。检查srcIndex,   数组的长度和下限)

这是我正在使用的代码:

    Using img As New MagickImage("C:\Jpeg With Exif.jpg")

        ' Retrieve the Exif Information (if any)
        Dim ExifData As ExifProfile = img.GetExifProfile()

        ' This instruction throws the same unhandled exception that the 'For' below.
        ' MsgBox(ExifData.Values.Count) 

        Select Case ExifData Is Nothing

            Case True ' Zero Exif values found.
                MessageBox.Show("The image does not contains Exif information", "Image Information",
                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

            Case Else ' At least 1 Exif value found.

                ' StringBuilder to format the Exif entries.
                Dim sb As New System.Text.StringBuilder

                ' Iterate the Exif values.
                For Each Value As ExifValue In ExifData.Values

                ' ******
                ' Here throws the unhandled exception.
                ' Even if the For block is empty of instructions.
                ' ******

                    With sb
                        .AppendLine(String.Format("{0}({1}): {2}",
                                                  Value.Tag,
                                                  Value.DataType,
                                                  Value.ToString()))
                    End With '/ sb

                Next Value

                MessageBox.Show(sb.ToString, "Exif Image Information",
                    MessageBoxButtons.OK, MessageBoxIcon.Information)

        End Select '/ ExifData Is Nothing

    End Using '/ img As New MagickImage

那么这是一个错误,或者我做错了什么?

注意:我以前使用此命令在ExifTool程序中添加了Exif信息:

.\exiftool.exe -artist="value" "c:\Test.jpg"

以下是我试图检查的图片: http://www.mediafire.com/?42kvy8hhu4mgpz7

1 个答案:

答案 0 :(得分:2)

您在Magick.NET中发现了一个错误。您的图片包含未正确检查的无效尺寸。这将在Magick.NET 6.8.9.401中修复。

正如评论中所指出的,您还可以在此处报告问题/提出问题:https://magick.codeplex.com/discussions。我会回复那里提出的所有问题。

使用包含此问题修复程序的构建,我能够提取以下值:

XResolution: 1
YResolution: 1
ResolutionUnit: 1
Artist: Phil Harvey
YCbCrPositioning: 1
Copyright: 2011 Phil Harvey