GraphicsMagick:命令失败:识别:没有此图像格式的解码委托`' @ error/constitute。c/ReadImage/562

GraphicsMagick : Command failed: identify: no decode delegate for this image format `' @ error/constitute.c/ReadImage/562

Re-post : 我一直在尝试将 PDF 转换为缩略图(PNG 格式)。这非常适用于我的本地设置。但是当我在 asure server(OS : UBUNTU) 上安装 GraphicsMagick、ImageMagick 和 ghostScript 时,它会抛出类似命令失败的错误:识别:此图像格式`'@ error/constitute 没有解码委托。 c/ReadImage/562..

我已经在本地安装了 GraphicsMagick、ImageMagick 和 ghostScript 以将 pdf 页面转换为缩略图,并且效果很好(不在服务器上)。

如错误中所述,我已经在本地计算机和服务器上列出了解码委托。我有很多不同之处,比如 bmp 委托存在于本地机器上但不存在于服务器上(UBUNTU)。

我在网上搜索了很多有关此问题的信息,但没有找到任何解决方案。

谁能帮我解决这个问题?提前致谢

GraphicsMagick 需要 Ghostscript 才能阅读 PDF。您的系统找不到 Ghostscript,所以有两件事要做:

  • 找到 Ghostscript
  • 告诉 GraphicsMagick 它在哪里

您应该能够通过 运行 在您的终端中输入以下命令找到 Ghostscript 的完整路径:

type gs             # or maybe "which gs", or maybe "which gs-64"

如果这不起作用,请使用您的系统必须的任何包管理器来列出您安装的任何包中包含的文件的名称,以获取 Ghostscript.

如果还是不行,你可以试试:

find  /usr  /opt -name gs 2> /dev/null

接下来,您需要找到 GraphicsMagick 代理的配置位置。这因系统而异。我认为该文件总是被称为 delegates.mgk:

  • 您可以尝试让您的包管理器列出包含在 GraphicsMagick
  • 中的文件
  • 您可以 运行 gm convert -debug all SomeFile.pdf junk.png 并找到它寻找编码器和代表的位置 - 它会在大量输出的开始附近。

如果还是不行,你可以试试:

find /usr /opt /etc -name delegates.mgk 2> /dev/null

最后,您需要编辑刚刚找到的配置文件,使其包含 Ghostscript.

的完整路径

希望对您有所帮助,抱歉有些地方有点模糊,但是配置的可能性有很多。

检查服务器上的 /etc/ImageMagick-6/policy.xml。由于可能的安全问题,Ghostscript 委托通常在默认情况下被禁用。