所以我从互联网上下载并编辑了一个脚本来提取图像,找出它包含的十六进制值及其百分比:
脚本在这里:
<?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
的pastebin链接现在,如果我使用服务器上的图像,脚本可以正常工作,例如在Get_Color函数中使用/image.png。但是,如果我尝试使用其他网站上的图片(包括http://www.site.com/image.png),则该脚本将不再有效,并显示此错误:
警告:为第22行的......中的foreach()提供的参数无效
是否有人能够看到我能够热链接到图像的方式,因为这是使用脚本的重点!
答案 0 :(得分:1)
您必须将文件下载到服务器,并将其完整文件名作为Get_Color($img)
参数传递给方法$img
。
因此,您需要调查另一个SO问题:Download File to server from URL
答案 1 :(得分:0)
该错误表示Get_Color
返回的值不是可以迭代的有效对象,可能不是集合。您需要知道Get_Color
内部如何工作以及当它无法获得所需内容时返回的内容。
在平均时间内,您可以[使用PHP]将外部网址中的图像下载到您的网站,然后下载到所需的文件夹中,然后从那里读取图像。
$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");
顺便问一下,你确认图片网址是否正确?