从.NET中的JPEG中读取IPTC字段时出错

时间:2009-05-18 17:09:02

标签: exception .net-3.5 jpeg iptc

我在大约1%的JPEG上调用BitmapMetadata.GetQuery(“/ app13 / irb / 8bimiptc / iptc”)时遇到以下异常。可能导致这种情况的原因以及我该怎么做才能解决这个问题? (我试过谷歌搜索,但我只能找到一个相关的结果,问同样的问题,但没有答案。)

System.OverflowException:
The image data generated an overflow during processing. ---> 
System.Runtime.InteropServices.COMException (0x88982F05): 
Exception from HRESULT: 0x88982F05
--- End of inner exception stack trace ---
at System.Windows.Media.Imaging.BitmapMetadata.GetQuery(String query)
at MyProject.ImageRecord..ctor(String file)
in C:\MyProject\ImageRecord.cs:line 93
The image data generated an overflow during processing.

编辑:

exiv2工具报告:

Error: Invalid Photoshop IRB data size 6372

4 个答案:

答案 0 :(得分:1)

我的猜测是Photoshop IRB数据比标题指定的长。

至少这是我可以通过浏览Exiv2的来源(第107行)来扣除的:

http://dev.exiv2.org/repositories/entry/exiv2/trunk/src/jpgimage.cpp?rev=1146

但我对c的理解并不是那么好! :)

答案 1 :(得分:1)

错误0x88982F05仅是WIC的常规值超出范围错误 因此,您可以轻松处理。这也许不是您对IPTC查询字符串的唯一问题。只需尝试{}捕捉{}这一部分就像这样优雅的失败转移

if (bitmapMetadata.GetQuery(MY_QUERY) != null &&) {
try { 
... }
catch {}

答案 2 :(得分:1)

答案 3 :(得分:0)

根据exiv2报告的信息,Photoshop IRB信息的大小与元数据的整体大小不一致。

如果您希望忽略这些消息,我会在您捕获的异常类型中更具体 - 只忽略或报告该特定的COM异常。

有几个工具/资源: