ImageMagick:convert-im6.q16: 没有定义图像

Abs*_*cDo 16 imagemagick convert-command 19.04

根据这个问题,如何在 linux 上从命令行将一系列图像转换为 PDF?, ImageMagick 可以将多个图像转换为单个 PDF。

如何反转操作并将多页的 PDF 转换为多张图像?

我尝试了以下命令,但显示错误:

$ convert test.pdf test-%02.png
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert-im6.q16: no images defined `test-%02.png' @ error/convert.c/ConvertImageCommand/3258.
Run Code Online (Sandbox Code Playgroud)

gs 已安装:

$ gs --version
9.26
Run Code Online (Sandbox Code Playgroud)

Ubuntu 版本:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 19.04
Release:    19.04
Codename:   disco
Run Code Online (Sandbox Code Playgroud)

and*_*.46 28

有趣的是,19.04(和其他 Ubuntu 版本!)下的 ImageMagick 禁用了许多 ghostscript 格式类型。这可以在以下片段中看到/etc/ImageMagick-6/policy.xml

  <!-- disable ghostscript format types -->
  <policy domain="coder" rights="none" pattern="PS" />
  <policy domain="coder" rights="none" pattern="EPS" />
  <policy domain="coder" rights="none" pattern="PDF" /> <------- Here!!
  <policy domain="coder" rights="none" pattern="XPS" />
Run Code Online (Sandbox Code Playgroud)

当然,我添加了箭头以引起您的注意:)。将此箭头线修改为:

  <policy domain="coder" rights="read | write" pattern="PDF" />
Run Code Online (Sandbox Code Playgroud)

您可以使用您最喜欢的文本编辑器来完成此操作,使用提升的权限,或者简单地使用以下 sed one-liner

sudo sed -i_bak \
's/rights="none" pattern="PDF"/rights="read | write" pattern="PDF"/' \
/etc/ImageMagick-6/policy.xml
Run Code Online (Sandbox Code Playgroud)

然后一切都应该没问题,我已经在我自己的 19.04 VM 上进行了全面测试,您所进行的转换工作完美无缺......

如果您希望将设置更改回默认值,以下一个 liner 将使用 sed 恢复在运行中创建的备份文件:

sudo mv /etc/ImageMagick-6/policy.xml_bak /etc/ImageMagick-6/policy.xml
Run Code Online (Sandbox Code Playgroud)

命令行多酷啊!


aBe*_*aBe 5

出现相同错误的另一个原因是源图像太宽、太高或太重。

/etc/ImageMagick-6/policy.xml文件控制什么是可接受的图像。最大宽度和高度设置如下:

<policy domain="resource" name="width" value="10KP"/>
<policy domain="resource" name="height" value="10KP"/>
Run Code Online (Sandbox Code Playgroud)

10KP 代表 10000 像素。如果您的图像比运行identify时大,则不会在终端中显示图像信息,并且图像对于 Image Magick 来说基本上是遥不可及的。

影响图像是可用与否其他常见的属性是:memorymapareadisk

这里描述的文件policy.xmlhttps : //imagemagick.org/script/security-policy.php


Twi*_*ear 5

以上所有内容+1。

另请注意,我的 Docker 容器没有gs安装 (Ghostscript),因此convert-im6.q16: no images defined 在这种情况下会抛出非常类似的错误消息。

  • 同样,在容器中执行“apt-get install Ghostscript”(以及policy.xml中策略行的注释)之后,一切正常。 (3认同)