graphicsmagick - 如何使用标准输入和输出来传输两个命令

graphicsmagick - how to pipe two commands using standard in- & output

我想使用管道连接两个不同的 graphicsmagick 命令,例如创建平铺图像并在完成后添加边框。我从手册中理解的“-”应该用作标准输入或输出,所以这是我尝试的:

gm montage -geometry +20+20 -tile 2x2 /home/pi/*.jpg - | gm convert -border 150x150 - /home/pi/test.jpg 

但由于我不明白的原因,它因以下错误消息而中断:

gm montage: No encode delegate for this image format (-) [No such file or directory].

知道我做错了什么吗?任何提示将不胜感激......

尝试指定要通过 stdin/stdout 发送的文件类型,例如 MIFF(Magick 图像文件格式),它将保留所有元数据并对管道中的图像进行无损编码:

gm montage -tile 2x2 *.jpg miff:- | gm convert miff:- -border 150x150 result.png

顺便说一句,您也可以使用PNG:-JPEG:-,只是MIFF最好。