我想创建一个验证码图片使用转换从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

其他回答

在阅读了这里的一些建议并结合这些想法后,对我来说,以下修改/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)

如果您不需要通过同一工具处理光栅文件和PDF/PS/EPS,请不要放松ImageMagick的安全性。

相反,保持你的web应用程序完整的防御深度,检查你的Ghostscript已经为所有已知的-dSAFER漏洞打了补丁,然后直接调用它。

gs -dSAFER -r300 -sDEVICE=png16m -o document-%03d.png document.pdf

-dSAFER opts you out of the legacy-compatibility "run Postscript will full permission to interact with the outside world as a turing-complete programming language" mode. -r300 sets the desired DPI to 300 (the default is 72) -sDEVICE specifies the output format (See the Devices section of the manual for other choices.) -o is a shorthand for -dBATCH -dNOPAUSE -sOutputFile= This section of the Ghostscript manual gives some example formats for for multi-file filename output but, for the actual syntax definition, it points you at the documentation for the C printf(3) function.

如果你渲染EPS文件,添加-dEPSCrop,这样它就不会填充你的输出到页面大小,并使用-sDEVICE=pngalpha来获得透明的背景。

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

这个方法对我很有效:

在终端运行中:

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

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

rights="none" 

to

rights="read | write" 

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

我多次使用ImageMagic convert命令将*.tif文件转换为*.pdf文件。

我不知道为什么,但今天我开始收到以下错误:

convert: not authorized `a.pdf' @ error/constitute.c/WriteImage/1028.

发出命令后:

convert a.tif a.pdf

在阅读以上答案后,我编辑了文件/etc/ imagemagick -6/policy.xml

改了句台词:

policy domain="coder" rights="none" pattern="PDF" 

to

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

现在一切正常。

我有“ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28” 在Ubuntu 16.04.5 LTS上。

删除/etc/ imagemagick /policy.xml文件即可。如。

rm /etc/<ImageMagick_PATH>/policy.xml

对于ImageMagick 6,它是:

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