我从阅读ImageMagick documentation有关文本的理解是@-
符号读取标准输入的内容。
因此,这应该是一种非常直接的渲染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上远程查看这个问题的问题是this article,可追溯到2015年10月,其中修补了ImageMagick 6.9.2-5 Beta修复类似问题。
问题:我没有正确地逃避它,是否在ImageMagick中确实存在问题,或者我的Linux发行版是否收到了带有错误的ImageMagick的历史版本,我需要{{3} }?
左很多实验后
已解决...?在Ubuntu框中从源代码构建了ImageMagick 7.0.2,并且上述命令可以根据需要运行。有更好的解决方案吗?
答案 0 :(得分:4)
无需从源代码构建。只需用“`tee`”替换@ - :
printf "Hello\nWorld" |
convert \
-size 1280x100 \
-background '#0000FF10' \
-density 90 \
-gravity Center \
-fill black \
-font Helvetica \
caption:"`tee`" \
test.png
`tee`将在完成convert命令之前先执行'process'stdin。
答案 1 :(得分:0)
我怀疑这取决于policy.xml
文件中的差异。最近有关于IM安全漏洞的警告(detailed here),我猜你的一台服务器上的policy.xml
文件已经安全而不是另一台。该文件中受影响的行是:
<!-- <policy domain="path" rights="none" pattern="@*" /> -->
问题所有者提供的澄清:
/etc/ImageMagick-6/policy.xml
Mark进一步澄清:
policy.xml文件的位置并不总是/etc/ImageMagick-6
,在不同的系统上是不同的 - 例如在OS X上它位于/usr/local/Cellar/imagemagick...
下。
找到policy.xml
文件的可靠方法是运行以下命令并意识到ImageMagick希望policy.xml
文件与delegates.xml
和{{1}在同一目录中}}:
coder.xml