我想创建一个验证码图片使用转换从ImageMagick。

我也这么做了,但是有一些问题。

在我的linux shell:

convert -background white -fill black -font FreeSerif-Bold -pointsize 36 label:'adfgh' ./test.png

错误是:

adfgh @ error/constitute.c/ReadImage/453 转换:缺少一个图像文件名。/test.png @ 错误/ convert.c / ConvertImageCommand / 3015

我的ImageMagick:版本:6.7.2-7,我安装它yum install ImageMagick。

我笨。有什么建议吗?


当前回答

如果有人需要在安装后用一个命令来完成,运行这个!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml

其他回答

注意:此解决方案和任何其他“编辑policy.xml”解决方案禁用针对ImageMagick中任意代码执行漏洞的安全措施。如果需要处理不能100%控制的输入,则应该使用不同的程序(而不是ImageMagick)。

如果您还在这里,您正在尝试编辑您完全控制、知道是安全的且用户无法编辑的图像。

yum安装了一个/etc/ imagemagick /policy.xml文件。它几乎不允许任何事情(为了安全性和保护您的系统不被ImageMagick调用重载)。

如果你得到一个ReadImage错误如上所述,你可以将行更改为:

<policy domain="coder" rights="read" pattern="LABEL" />

这应该能解决问题。

这个文件里面有很多文档,所以你应该读一下。例如,如果你需要更多的权限,你可以像这样组合它们:

<policy domain="coder" rights="read|write" pattern="LABEL" />

...这比删除所有权限检查(即删除或注释该行)更可取。

如果有人需要在安装后用一个命令来完成,运行这个!

sed -i 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml

我在尝试将pdf转换为jpg时出现了这个错误,并使用以下方法解决了这个问题: sudo vi /etc/ imagemagick */policy.xml

变化:

策略域=“编码器” 权限=“无” 模式=“PDF”

to:

policy domain="coder" rights="read|write" pattern="PDF"

来源:http://realtechtalk.com/imagemagick_convert_pdf_not_authorized - 2217的文章

在阅读了这里的一些建议并结合这些想法后,对我来说,以下修改/etc/ imagemagick -6/policy.xml是必要的:

<policy domain="coder" rights="read|write" pattern="PDF" />

... Rights ="none"没有帮助. ...pattern="LABEL"是不必要的。 虽然我不使用大的png文件(只有~1 Mb),但内存限制的一些更改也是必要的:

<policy domain="resource" name="memory" value="2GiB"/>

(而不是256Mib),并且

<policy domain="resource" name="area" value="2GB"/>

(不是128 MB)

在我的Ubuntu 16.04系统最近更新后,我也开始得到这个错误时,试图运行转换。ps文件转换成pdf。

这个方法对我很有效:

在终端运行中:

sudo gedit /etc/ImageMagick-6/policy.xml

这将在gedit文本编辑器中打开policy.xml文件。如果没有,你的图像魔法可能被安装在不同的地方。 然后改变

rights="none" 

to

rights="read | write" 

PDF, EPS和PS行接近文件底部。保存并退出,然后图像魔法应该再次工作。