2013-12-12 97 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