我有一些MagickWand代码,其中MagickReadImage()
在一个系统上失败(返回MagickFalse
),而另一个系统在另一个系统上工作。
现在没有异常发生,MagickGetException()
返回一个空字符串,如果我正确理解文档,则表示没有异常。
我要打开的文件在那里,我可以使用同一用户下的其他工具打开它,而我使用的magick_wand
不是NULL。
呼叫周围的代码基本上是这样的:
// read image
MagickBooleanType status = MagickReadImage(magick_wand, fn_selector);
// make sure it worked
if (status == MagickFalse)
{
char *description;
ExceptionType severity;
description=MagickGetException(magick_wand,&severity);
fprintf(stderr,"%s %s %lu :%s: %u\n",GetMagickModule(),description,severity);
description=(char *) MagickRelinquishMemory(description);
fprintf(stderr, "magickwand couldn't read file %s\n", fn_selector);
exit(1);
}
有没有办法找出函数调用失败的原因? MagickReadImage()
似乎调用了一个内部函数,它不易调试,我不想自己构建MagickWand库,如果不是绝对必要的话,添加调试内容。
使用MagickWand版本6.8.9.9(debian jessie)
答案 0 :(得分:0)
结果(经过strace
之后)ImageMagick的PDF阅读部分需要在系统上安装 ghostscript 可执行文件(/usr/bin/gs
)。现在,当通过Debian apt包管理器安装ImageMagick时,ghostscript不是依赖项,只是对Magick库的推荐。不幸的是,当读取调用失败时,Magick认为没有必要以任何方式通知您库部件丢失。
安装ghostscript
软件包后,一切都按预期工作。