1

在我尝试过的大约 1% 的 JPEG 上调用 BitmapMetadata.GetQuery("/app13/irb/8biiptc/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

3 回答 3

1

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

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

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

但是我对c的理解不是很好!:)

于 2009-05-28T20:26:05.477 回答
1

错误 0x88982F05 只是 WIC 的常规值超出范围错误,因此您可以轻松处理它。此外,这可能不是您使用 IPTC 查询字符串的唯一问题。只需尝试 {} catch {} 这部分像这样优雅地切换

if (bitmapMetadata.GetQuery(MY_QUERY) != null &&) {
try { 
... }
catch {}
于 2009-06-01T15:42:18.497 回答
0

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

如果您希望忽略消息,我会更具体地说明您捕获的异常类型——只忽略或报告特定的 COM 异常。

有几个工具/资源:

于 2009-06-01T18:25:27.647 回答