从 xwd 到 ImageMagick 的转换的管道会生成裁剪后的图像

从 xwd 到 ImageMagick 的转换的管道会生成裁剪后的图像

我正在尝试截取远程主机的屏幕截图(使用xwd)并将其转换为 png(使用convert)。我需要它成为一个无人值守的 oneliner,所以这就是我正在做的:

sshpass -p THE_PASSWORD ssh [email protected] xwd -display :0 -root | convert xwd:- output.png

问题是生成的 PNG 文件被裁剪,仅显示屏幕的顶部部分。如果我分两步完成该过程,它会起作用:

sshpass -p THE_PASSWORD ssh [email protected] xwd -display :0 -root > output.xwd
convert output.xwd output.png

但我需要只用一个命令来完成它。

convert我猜这与从远程命令接收数据的速率有关xwd。我尝试过使用stdbuf 正如这里提到的增加缓冲区大小,但似乎没有任何效果。

我正在使用 ImageMagick 6.7.8.9-15。

答案1

我需要只用一个命令来完成

如果“一个命令”表示单个 shell 表达式,您可以将它们链接起来&&

sshpass -p THE_PASSWORD ssh [email protected] xwd -display :0 -root > output.xwd && convert output.xwd output.png

或者如果这不起作用,您可以使用流程替代:

sshpass -p THE_PASSWORD ssh [email protected] convert <(xwd -display :0 -root) output.png

相关内容