Сравнение ImageMagick не возвращает ничего php shell_exec () - PullRequest
2 голосов
/ 26 сентября 2011

Я хочу сравнить два изображения с помощью Image Magick.Для этого я использую следующую команду в командной строке Windows

сравнить -verbose -metric mae image1.jpg image2.jpg diff.png
Эта команда сравнивает image1 и image2 и выводит результирующий вывод в окно командной строкии генерирует файл Разность.jpg, который показывает разницу между двумя изображениями.

Но когда я запускаю ту же команду с помощью php shell_exec (), вывод не возвращается.Я знаю, что команда выполняется php как разность. Jpg генерируется, но функция не возвращает результат.Точно так же, когда я пытаюсь выполнить passthrough () или system () для получения вывода, снова выполняется команда, но вывод не возвращается. Но когда я использую встроенные системные команды, такие как dir, я могу легко получить вывод.

Любая помощьбудет оценен, так как я застрял на этом в течение нескольких часов, но все еще безуспешно

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Я решил проблему. Странно, что сравнение imagemagick с подробным аргументом не отправляет ничего в обычный вывод командной строки. Он отправляет вывод в stderr. Stderr обычно получает сообщение об ошибке. Но здесь эта команда записывает нормальный вывод в stderr.

Поскольку выходные данные отправляются в stderr, shell_exec () не может его получить. Чтобы захватить его в shell_exec (), нам нужно добавить 2> & 1 к команде. Это перенаправит stderr на обычный вывод командной строки.

0 голосов
/ 26 сентября 2011

Команда ImageMagick compare обычно не производит никакого вывода.Вы даете ему два входных файла и имя выходного файла, и он тихо создает выходной файл.

Если есть ошибка, он записывает сообщение об ошибке в stderr и устанавливает ненулевой выходстатус.(Должен быть способ получить статус выхода, но я не знаю PHP.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...