1

そこで、インターネットからスクリプトをダウンロードして編集し、画像を取得して、そこに含まれる16進値とそのパーセンテージを調べました。

スクリプトはここにあります:

<?php
$delta = 5;
$reduce_brightness = true;
$reduce_gradients = true;
$num_results = 5;

include_once("colors.inc.php");
$ex=new GetMostCommonColors();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Colour Verification</title>

</head>
<body>
    <div id="wrap">
    <img src="http://www.image.come/image.png" alt="test image" />
    <?php
        $colors=$ex->Get_Color("http://www.image.come/image.png", $num_results, $reduce_brightness, $reduce_gradients, $delta);
        $success = true;
        foreach ( $colors as $hex => $count ) {
            if ($hex !== 'e6af23') {$success = false; }
        if ($hex == 'e6af23' && $count > 0.05) {$success = true; break;}
        }

        if ($success == true) { echo "This is the correct colour. Success!"; } else { echo "This is NOT the correct colour. Failure!"; }


?>
    </div>

</body>
</html>

これがファイルcolors.inc.phpへのペーストビンリンクです

http://pastebin.com/phUe5Pad

これで、サーバー上にある画像を使用する場合、たとえばGet_Color関数で/image.pngを使用する場合、スクリプトは完全に正常に機能します。ただし、http://www.site.com/image.pngを含む別のWebサイトの画像を使用しようとすると、スクリプトが機能しなくなり、次のエラーが表示されます。

警告:22行目の...のforeach()に無効な引数が指定されました

これがスクリプトを使用するすべてのポイントだったので、私が画像にホットリンクできる方法を誰かが見ることができますか?

4

2 に答える 2

1

ファイルをサーバーにダウンロードし、その完全なファイル名をパラメーターとしてメソッドに渡す必要がありGet_Color($img)ます$img

したがって、別の SO の質問を調査する必要があります: URL からサーバーにファイルをダウンロードします。

于 2012-08-19T15:39:15.533 に答える
0

このエラーは、によって返された値Get_Colorが反復可能な有効なオブジェクトではなく、おそらくコレクションではないことを示しています。Get_Colorが内部でどのように機能し、必要なものが得られなかった場合に何が返されるかを知る必要があります。

それまでの間、[PHP を使用して] 画像を外部 URL からサイトにダウンロードし、必要なフォルダーにダウンロードして、そこから画像を読み取ることができます。

$image = "http://www.image.come/image.png";
download($image, 'folderName'); //your custom function
dnld_image_name = getNameOfImage();

$colors=$ex->Get_Color("/foldername/dnld_image_name.png");

ところで、画像のURLが正しいことを確認しましたか?

于 2012-08-19T15:39:03.950 に答える