我在大约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
答案 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)
查看此帖 - 解决了我的问题
http://getsatisfaction.com/livelabs/topics/deepzoomtools_dll_exception_from_hresult_0x88982f05
答案 3 :(得分:0)
根据exiv2报告的信息,Photoshop IRB信息的大小与元数据的整体大小不一致。
如果您希望忽略这些消息,我会在您捕获的异常类型中更具体 - 只忽略或报告该特定的COM异常。
有几个工具/资源: