0

全部,

环境:.net 2.0,Magick.NET 库的 x64 构建

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

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

            image.Write(targetFilePath);
        }

image.Read() 抛出 MagickCoderErrorException,内部异常是 MagickCoderWarningException 抱怨:

ImageMagick.vshost.exe:遇到标记为 32934 (0x80a6) 的未知字段。`TIFFReadDirectory'@warning/tiff.c/TIFFWarnings/880

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

4

2 回答 2

0

看起来错误异常被抛出,因为警告异常没有正确处理。

您的应用程序应该排除警告异常,因为这是处理专有、不合规或奇怪的图像时的常见消息。

 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 的论坛,并了解为什么这是预期行为。但是,如果唯一的回应是“没关系”“忽略那个”,请不要犹豫或气馁。

于 2015-08-20T02:29:13.357 回答
0

全部,

通过让作者在 Magic.net 库中添加对忽略标签的支持,此问题已得到解决,请查看 Magick.NET 7.0.0.0018 版本。

于 2015-09-01T20:45:19.147 回答