我正在从事一个项目,该项目涉及从图像中提取红色,绿色和蓝色值,并找到红色值,绿色值和蓝色值的最大值。当我上传不包含红色值的图像时,我收到此错误消息:未定义的偏移量。如果图像不包含绿色或蓝色值,则会显示相同的消息。我使用 empty() 来检查数组是否为空,但它没有帮助。
我的代码:
for($j1=0;$j1<=$red_count;$j1++){
if (empty($reds)){
$reds[$j1]=0;
}
if ($reds[$j1]>=$red_max){
$red_max = $reds[$j1];
}
}
for($j2=0;$j2<=$blue_count;$j2++){
if (empty($blues)){
$blues[$j2]=0;
}
if ($blues[$j2]>=$blue_max){
$blue_max = $blues[$j2];
}
}
for($j3=0;$j3<=$green_count;$j3++){
if (empty($greens)){
$greens[$j3]=0;
}
if ($greens[$j3]>=$green_max){
$green_max = $greens[$j3];
}
}
让我们只看一种颜色。问题是您的 for 循环。因为它运行一次,即使$reds为空。(而且它经常按时运行。为什么不使用foreach?
$red_max = 0; //initialize
foreach ($reds as $value) {
if ($value > $red_max) { $red_max = $value; }
}
我想你可以把它应用于不同的颜色。
函数max也适用于数组。
if(sizeof($reds) > 0){
$red_max = max($reds);
}
if(sizeof($blues) > 0){
$blue_max = max($blues);
}
if(sizeof($greens) > 0){
$green_max = max($greens);
}