全部,
环境:.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);
}
image.Read((抛出MagickCoderErrorException,内部异常为MagickCoder WarningException抱怨:
ImageMagick.vhost.exe:遇到标记为32934(0x80a6(的未知字段`TIFFReadDirectory'@警告/tif.c/tiff警告/880
你可以在我的代码中清楚地看到,我指示库忽略这个标记,但我仍然得到了这个异常。为什么?顺便说一句,当我捕捉到异常时,什么也不做,调用image。写(我的.pdf(我生成了一个pdf,但如果我做错了什么,我不想简单地忽略异常。
由于未正确处理Warning Exception,似乎引发了Error Exception。
您的应用程序应该排除"警告异常",因为这是处理专有、不兼容或只是奇怪图像时的常见消息。
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的论坛上,看看为什么这是意料之中的行为。但是,如果唯一的回应是"没关系">或《忽略它》,不要拖延或气馁。
全部,
通过让作者在Magic.net库中添加对忽略标记的支持,修复了这个问题,请查看Magick.net 7.0.0.0018版本。