当至少一个数组没有值时,使用 php 从图像中查找红色、绿色和蓝色数组的最大值



我正在从事一个项目,该项目涉及从图像中提取红色,绿色和蓝色值,并找到红色值,绿色值和蓝色值的最大值。当我上传不包含红色值的图像时,我收到此错误消息:未定义的偏移量。如果图像不包含绿色或蓝色值,则会显示相同的消息。我使用 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);
}

相关内容

最新更新