所有
ENV: .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,内部异常是MagickCoderWarningException抱怨:
ImageMagick.vshost.exe:遇到标记为32934(0x80a6)的未知字段。 `TIFFReadDirectory'@ warning / tiff.c / TIFFWarnings / 880
您可以在我的代码中清楚地看到我指示库忽略此标记,但仍然得到此异常。为什么? 顺便说一句,当我抓住异常,什么也不做,并调用image.Write(my.pdf)我得到了一个pdf生成但我不想简单地忽略异常,如果我做错了。
答案 0 :(得分: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's forums,并发现为什么这是预期的行为。但是,如果唯一的回答是"那很好" ,或"请不要忽视或劝阻该"
答案 1 :(得分:0)
所有
通过让作者在Magic.net库中添加忽略标记的支持来修复此问题,请查看版本Magick.NET 7.0.0.0018。