захватить вывод команды imagemagick в php - PullRequest
1 голос
/ 09 августа 2010

Я использую приведенную ниже команду imagemgaick, которая выводит на стандартный вывод:

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

Я пытаюсь захватить вывод этой команды из PHP. Обычно я использую команды exec ($ cmd, $ output) , которые останавливают вывод cmd на стандартный вывод и вместо этого помещают в массив $ output. Однако по какой-то причине здесь это не так, вывод все еще идет в стандартный вывод, а выходной массив пуст.

Есть идеи, как обойти эту проблему?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

exec() только помещает вывод в STDOUT в выходной массив, однако различные инструменты imagemagick также выводят сообщения в STDERR. Вы можете перенаправить сообщения из STDERR в STDOUT (и, следовательно, также получить их в массиве $ output), добавив это в конце вашей команды: 2>&1

В качестве альтернативы, если вы хотите иметь возможность различать, где сообщения были первоначально выведены, вы можете использовать proc_open, который позволяет указывать отдельные каналы для STDOUT и STDERR и захватывать выходные данные из них отдельно.

0 голосов
/ 09 августа 2010

Сравнить отпечатки со стандартом STDERR.

Использование:

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