我正在尝试使用 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
答案 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