0

我有一些 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)

4

1 回答 1

0

原来(经过strace)ImageMagick 的 PDF 阅读部分需要在系统上安装ghostscript可执行文件( )。/usr/bin/gs现在通过 Debian apt 包管理器安装 ImageMagick 时,ghostscript 不是依赖项,只是 Magick 库的推荐。不幸的是,Magick 认为没有必要在读取调用失败时以任何方式通知您缺少库组件。

安装ghostscript软件包后,一切都按预期工作。

于 2016-09-16T18:28:30.510 回答