【问题标题】:ImageMagick.MagickResourceLimitErrorException: 'TooManyExceptions (exception processing is suspended)ImageMagick.MagickResourceLimitErrorException: 'TooManyExceptions(异常处理暂停)
【发布时间】:2019-01-10 05:15:54
【问题描述】:

我收到此错误:

ImageMagick.MagickResourceLimitErrorException: 'TooManyExceptions (exception processing is suspended) @ error/exception.c/ThrowException/969'

在这条线上

using (MagickImageCollection tiffPageCollection = new MagickImageCollection())
{
    tiffPageCollection.Read(tifName);  // fails here.
}

出现问题是因为92页tif每页出现三个这样的错误:

{"ASCII value for tag \"Copyright\" does not end in null byte. `TIFFFetchNormalTag' @ warning/tiff.c/TIFFWarnings/1007"}    ImageMagick.MagickException {ImageMagick.MagickCoderWarningException}

超过警告错误的数量,从而触发 TooManyExceptions 错误。

这个网址暗示了一个解决方案:

http://www.imagemagick.org/discourse-server/viewtopic.php?t=33989

添加此处理程序:

private void MagickNET_Log (object sender, LogEventArgs e)
{
    // write to a single log file...
    if ((RemoteImageMagickEventLogging & e.EventType) != LogEvents.None)
    {
        switch (e.EventType)
        {
        case LogEvents.Exception:
            if (!e.Message.Contains ("TIFFWarnings"))
            {
                 TriggerRemoteLoggingEvent (e.EventType, 
                     EZLogger.LoggingLevel.Note1, e.Message);
            }
            break;
        }
    }
}

它还提到此异常已添加到“ImageMagick.Net 7.4.5 Q8 AnyCPU”中,并且在早期版本中没有发生。我在更新到 v7.10.0 的“ImageMagick.Net-Q16-AnyCPU v7.9.1”上遇到问题,但仍然遇到同样的问题。

所以,我的问题是:

  1. 哪些版本的 ImageMagick 有和没有这个功能?

  2. 将处理程序交给我的代码的步骤是什么?

  3. 有没有办法增加允许的警告的最大数量,我可以将这个限制提高到高到我不会达到的程度?

【问题讨论】:

  • ImageMagick 中没有 7.4.8 这样的版本。当前版本是 7.0.8.23。也许那是 Magick.NET 的一个版本。

标签: c# imagemagick imagemagick.net


【解决方案1】:

此问题已在 Magick.NET 7.10.1.0 中修复:https://github.com/dlemstra/Magick.NET/releases/tag/7.10.1.0TooManyExceptions (exception processing is suspended) 异常将不再抛出,因为它已被更改为警告。

【讨论】:

    【解决方案2】:

    哪些版本的 ImageMagick 有和没有这个功能?

    changelog,早在7.0.7-22版本就添加了。围绕此功能的工作主体是对Google's OSS-fuzz project 的回复。

    有没有办法增加允许的警告的最大数量,我可以将这个限制提高到高到我不会达到的程度?

    目前没有。限制被硬编码为MagickCore/exception.c ...

    #define MaxExceptionList 64
    

    但这是开源的,而且是一个相当新的功能。如果您在“Bugs”message board 下发布问题,您可以让开发人员修改限制,或者允许用户控制polices.xml 下的某些资源属性。展示一个真实世界的测试用例也有帮助,包含 64 个以上警告的 tiff 文件应该需要一定程度的审查。

    【讨论】:

    • 它是一个多页的 tiff,每个页面上都会出现相同的三个警告错误。就我而言,这些警告是无害的。我上面提供的链接有一个示例链接。我的示例包含私人数据。
    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多