2013-12-12 64 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; 
?> 

更新2

在评论

回答OP问题:

在转换手册页它没有规定是否以及如何可能只打印RMSE错误百分比...

您可以添加(例如)| sed -e 's/.*(\(.*\))/\1/g'的命令,只保留RMSE误差百分比...

+0

我简化我的代码: 正是在这里:HTTP:// zing- cards.com/imagecompare.php <?php echo“

比较图片

”; $结果= EXEC( “/ USR/bin中/比较-metric RMSE /home/*username*/public_html/zing/flower.jpg /home/*username*/public_html/zing/woman1.png NULL:”); 回声“结果:”。 $结果; ?> – MattM

+0

你在使用Bluehost吗?有什么我必须做的安装或激活比较?正如我所说的转换命令的作品。我只是得到一个空白,没有结果。有没有办法让imagemagick输出一个错误代码? – MattM

+0

我没有imagick安装:http://zing-cards.com/imagick.php可能是一个问题?这页是这样编码的:<?php if(!extension_loaded('imagick')) echo'imagick not installed'; ? > – MattM