代码之家  ›  专栏  ›  技术社区  ›  Liam

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

  •  1
  • Liam  · 技术社区  · 16 年前

    当我在大约1%的jpeg上调用bitmapmetadata.getquery(“/app13/irb/8bimitc/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 回复  |  直到 16 年前
        1
  •  1
  •   Marc    16 年前

    我猜photoshop irb数据比头指定的长。

    至少这是我可以通过略读exiv2(第107行)的来源来推断的:

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

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

        2
  •  1
  •   Tamir    16 年前

    错误0x88982f05是WIC唯一超出范围错误的常规值 这样你就可以轻松地处理它了。此外,这可能不是IPTC查询字符串的唯一问题。只需尝试捕捉这个部分,像这样优雅的休憩

    if (bitmapMetadata.GetQuery(MY_QUERY) != null &&) {
    try { 
    ... }
    catch {}
    
        3
  •  1
  •   Dee    16 年前
        4
  •  0
  •   JacquesB    16 年前

    根据exiv2报告的信息,photoshop irb信息的大小与元数据的总体大小不一致。

    如果您希望忽略这些消息,我将更具体地介绍您捕获的异常类型——只忽略或报告特定的COM异常。

    一些工具/资源:

    推荐文章