在php中捕获imagemagick命令输出

发布于 2024-09-13 15:43:43 字数 300 浏览 6 评论 0原文

我正在运行以下 imagemgaick 命令,该命令输出到 stdout:

compare <img1> <img2> -metric MAE null:

我正在尝试从 PHP 捕获此命令的输出。通常我使用 exec($cmd,$output) 命令来阻止 cmd 输出进入 stdout,而是放入 $output 数组中。然而,由于某种原因,这里没有,输出仍然转到标准输出,并且输出数组为空。

知道如何解决这个问题吗?

谢谢。

I'm running the below imagemgaick command which outputs to stdout:

compare <img1> <img2> -metric MAE null:

I'm trying to capture the output of this command from PHP. Normally I use the exec($cmd,$output) commands which stops cmd output from going to stdout and instead places into the $output array. However for some reason here that doesn't, output still goes to stdout and the output array is empty.

Any idea how to workaround this issue?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不乱于心 2024-09-20 15:43:43

exec() 仅将输出放置到输出数组中的 STDOUT,但是各种 imagemagick 工具也会将消息输出到 STDERR。您可以将消息从 STDERR 重定向到 STDOUT (因此也将它们放入 $output 数组中),方法是将其附加到命令末尾: 2>&1

或者,如果您希望能够区分消息最初输出的位置,您可以使用 proc_open 来为 STDOUT 和 STDERR 指定单独的管道,并分别捕获它们的输出。

exec() only places the output to STDOUT in the output array, however various imagemagick tools also output messages to STDERR. You can redirect messages from STDERR to STDOUT (and hence also get them in $output array), by appending this at the end of your command: 2>&1

Alternatively if you want to be able to differentiate where the messages were originally output, you can use proc_open that allows you to specify separate pipes for STDOUT and STDERR, and capture output from them separately.

感受沵的脚步 2024-09-20 15:43:43

将打印结果与 STDERR 进行比较。

使用:

exec("compare <img1> <img2> -metric MAE null: 2>&1", $output);

Compare prints to STDERR.

Use:

exec("compare <img1> <img2> -metric MAE null: 2>&1", $output);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文