2013-12-12 4 views
1

Я пытаюсь взять два изображения и сравнить их с помощью ImageMagick.Сравните два изображения с ImageMagick

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

Моя учетная запись хостинга с bluehost, и я протестировал ее, изменив размер изображения и установив и запустив ImageMagick. Следующий код работает здесь: http://zing-cards.com/imagetest2.php

<?php 
$photo="/home/tcsdesig/public_html/zing/flower.jpg"; 
$cmd = "/usr/bin/convert $photo -thumbnail 100x100 JPG:-"; 

header("Content-type: image/jpeg"); 
passthru($cmd, $retval); 

?> 

Я понимаю код следующей командной строки (в соответствии с этим post) предполагается получить результаты в числовом формате:

compare -metric RMSE first.png second.png NULL: 

Вот мой код до сих пор:

<?php 
$photoPath1="/home/*username*/public_html/flower.jpg"; 
$photoPath2="/home/*username*/public_html/flower1.jpg"; 

$cmd = "/usr/bin/compare -metric RMSE $photoPath1 $photoPath2 NULL:"; 
exec($cmd); 
?> 

Как это сделать в моем браузере?

Другие, чем выше кода я попытался:

$result = exec($cmd); 
echo $result; 

Из того, что я понимаю, это должно показывать низкое число (так как изображения равны), и если я использую совершенно разные образы, которые они должны отображать большое количество но я не получаю никаких результатов.

ответ

2

Вот если я

<?php 
    $photoPath1="/home/*username*/public_html/flower.jpg"; 
    $photoPath2="/home/*username*/public_html/flower1.jpg"; 

    $result = exec("/usr/bin/compare -metric RMSE /usr/share/pixmaps/faces/dice.jpg /usr/share/pixmaps/faces/fish.jpg NULL:"); 
    echo $result; 
?> 

Я получаю

20455.4 (0.312129) 

Что я ожидаю, потому что образы совершенно разные ...

Я полагаю, вы должны попробовать compare на в командной строке, заранее ...

Например, если у вас нет 01 установленные в вашей системе, вы не получите никаких результатов ...

UPDATE: Для дальнейшего изучения в случае постоянного отсутствия продукции, пожалуйста:

<?php 
    $photoPath1 = "/home/*username*/public_html/flower.jpg"; 
    $photoPath2 = "/home/*username*/public_html/flower1.jpg"; 

    $compareCommand = "/usr/bin/compare"; 
    if (!is_executable($compareCommand)) die("Sorry, can't execute $compareCommand!"); 
    $output = shell_exec("$compareCommand -metric RMSE $photoPath1 $photoPath2 NULL: 2>&1"); 
    print $output; 
?> 

UPDATE 2

Отвечая О.П. вопрос в комментарии:

на странице новообращенного человека это не указано, если и как это можно напечатать только ошибку RMSE процент ...

Вы можете добавить (к примеру) в | sed -e 's/.*(\(.*\))/\1/g' к команде, просто держать процент ошибок RMSE ...

+0

Я упростил свой код: Именно здесь: Http: // zing- cards.com/imagecompare.php Сравнить изображения"; $ result = exec ("/ usr/bin/compare -metric RMSE /home/*username*/public_html/zing/flower.jpg /home/*username*/public_html/zing/woman1.png NULL:"); echo "Результат:". $ Результат; ?> – MattM

+0

Вы используете Bluehost? Есть ли что-то, что мне нужно сделать, чтобы установить или активировать сравнение? Как я сказал, команда преобразования работает. Я просто получаю пустой, никакого результата. Есть ли способ заставить imagemagick выводить код ошибки? – MattM

+0

У меня нет установленного изображения: http://zing-cards.com/imagick.php это может быть проблемой? Эта страница закодирована следующим образом: MattM

Смежные вопросы