我想创建一个验证码图片使用转换从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。
我笨。有什么建议吗?
如果您不需要通过同一工具处理光栅文件和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来获得透明的背景。
如果您不需要通过同一工具处理光栅文件和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来获得透明的背景。
我多次使用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上。
注意:此解决方案和任何其他“编辑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" />
...这比删除所有权限检查(即删除或注释该行)更可取。