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

ImageMagick将.tif文件转换为.pdf-导致MagickCoderError异常

  •  0
  • ActiveX  · 技术社区  · 9 年前

    全部的

    环境: .net 2.0,x64版本的Magick。NET库

    我在下面的代码中读取了.tif文件,并希望将其转换为.pdf。

    using (MagickImage image = new MagickImage())
            {
                image.SetDefine(MagickFormat.Tiff, "ignore-tags", "32934");
                image.Read(sourceFilePath);;
    
                image.Write(targetFilePath);
            }
    

    形象Read()引发MagickCoderErrorException,内部异常是MagickCodeerWarningException,抱怨:

    ImageMagick.vhost。exe:遇到标记为32934(0x80a6)的未知字段`TIFFReadDirectory'@warning/tif.c/TIFW警告/880

    你可以在我的代码中清楚地看到,我指示库忽略这个标记,但我仍然得到了这个异常。为什么? 顺便说一句,当我捕捉到异常时,什么都不做,调用image。写(my.pdf)我会生成一个pdf,但如果我做错了什么,我不想简单地忽略异常。

    2 回复  |  直到 9 年前
        1
  •  0
  •   emcconville    9 年前

    似乎是因为未正确处理警告异常而引发了错误异常。

    您的应用程序应该排除“警告例外”,因为这是处理专有、不兼容或只是奇怪图像时的常见消息。

     try {
       image.Read(sourceFilePath);
     } catch (MagickCoderWarningException err) {
       // Evaluate if this exception will introduce undesired behavior
       // If yes... re-throw 
       throw new Exception('This is undesired', err);
     }
     image.Write(targetFilePath);
    

    为什么?

    我强烈建议跳到 ImageMagick's forums ,并发现这是预期行为的原因。但如果唯一的反应是 “没关系” “忽略这一点” .

        2
  •  0
  •   ActiveX    9 年前

    全部的

    通过让作者添加对Magic中忽略标记的支持,解决了这个问题。net库,检查释放Magick。净7.0.0.0018。