Imagemagick:没有定义图像(用于输出文件名)

10

我正在尝试进行基本转换:

$ convert image.png out.jpg

但是出现了错误

convert-im6.q16: no images defined `out.jpg' @ error/convert.c/ConvertImageCommand/3258.

为什么输出图片名为out.jpg时会显示“未定义图像”?
$ ls
image.png

$ convert -version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

看起来 IM 无法处理 PNG 文件。快速测试。尝试 convert xc:red red.png,看看是否生成了一个像素为红色的 PNG。 - Mark Setchell
@MarkSetchell 是的,它生成了一个1像素的红色PNG。 - Pavel
4个回答

10
我遇到了同样的问题,并在这里找到了解决方案:https://askubuntu.com/a/1195393
在我的情况下,我试图转换的图像尺寸超过了ImageMagick策略限制。要解决此问题,请转到/etc/ImageMagick/policy.xml并编辑以下行:
<policy domain="resource" name="width" value="10KP"/>
<policy domain="resource" name="height" value="10KP"/>

value当前设置为10KP,即10,000像素,所以如果您的图像大于此值,ImageMagick将无法识别它。请将value更改为大于您正在处理的图像的尺寸。


2

将您的 policy.xml 文件替换为以下代码,解决了我的问题。

!!!! 这将绕过任何限制,因为没有设置限制策略。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policymap [
  <!ELEMENT policymap (policy)*>
  <!ATTLIST policymap xmlns CDATA #FIXED ''>
  <!ELEMENT policy EMPTY>
  <!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED
    name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED
    stealth NMTOKEN #IMPLIED value CDATA #IMPLIED>
]>
<policymap>
  <policy domain="Undefined" rights="none"/>
</policymap>


0

对我来说,这是因为 /tmp 目录已满。


0
感谢: 我的解决方案是同时更改policy.xml文件: <policy domain="coder" rights="read|write" pattern="PDF" /> 并且使用以下命令安装GhostScript: apt install ghostscript 之后,在Debian 11上,Imagick v6(带有Convert)能够将PDF转换为JPG。
希望这能帮助像我一样花了几个小时研究解决方案的其他人!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接