从阅读ImageMagick文档的文本来看,我的理解是@-
符号读取标准input的内容。
因此,这应该是一个相当直接的呈现Hello World的方式。
printf "Hello\nWorld" | convert \ -size 1280x100 \ -background '#0000FF10' \ -density 90 \ -gravity Center \ -fill black \ -font Helvetica \ caption:@- \ test.png
在OS X 10.11.5通过HomeBrew ,这个工程,使用convert
版本:ImageMagick 6.9.4-3 Q16 x86_64 2016-05-20。
但是在Ubuntu 16.04 LTS上,相同的命令不起作用,使用convert
版本:ImageMagick 6.8.9-9 Q16 x86_64 2016-06-01。 实际上,它从字面上呈现stdin操作符。
我在Google上唯一能够远程查找的问题就是这个问题, 这篇文章的历史可追溯至2015年10月,ImageMagick 6.9.2-5 Beta已经修补以解决类似的问题。
问题 :我没有正确地转义它,在ImageMagick中是否存在真正的问题,或者是我的Linux Distro拿起ImageMagick的历史版本,并且需要从源代码构build ?
许多实验后不久
解决了 …? 在Ubuntu上从源代码构buildImageMagick 7.0.2,上面的命令按照需要工作。 有更好的解决scheme吗?
不需要从源代码构建。 只需将“ – ”替换为“T”即可:
printf "Hello\nWorld" | convert \ -size 1280x100 \ -background '#0000FF10' \ -density 90 \ -gravity Center \ -fill black \ -font Helvetica \ caption:"`tee`" \ test.png
在完成转换命令之前,“tee”将首先执行,然后执行“stdin”stdin。
我怀疑这是由于你的policy.xml
文件的差异。 最近有关于IM安全漏洞的警告( 这里详细介绍 ),我想你的一个服务器上的policy.xml
文件已经变得安全了,而不是其他的。 该文件中受影响的行是:
<!-- <policy domain="path" rights="none" pattern="@*" /> -->
问题所有者提供的澄清:
/etc/ImageMagick-6/policy.xml
马克进一步澄清:
policy.xml文件的位置并不总是/etc/ImageMagick-6
,它在不同的系统上是不同的,例如在OS X下的/usr/local/Cellar/imagemagick...
找到policy.xml
文件的确切方法是运行以下命令,并意识到ImageMagick希望policy.xml
文件与delegates.xml
和coder.xml
位于相同的目录中:
convert -debug configure logo: null: 2>&1 | grep -Ei "Searching|Loading"