2013-12-18 17 views
0

我正在從事一個涉及從圖像中提取紅色,綠色和藍色值並查找紅色值,綠色值和藍色值的最大值。 當我上傳一個不包含紅色值的圖片時,我得到了這個錯誤信息:Undefined offset。如果圖像不包含綠色或藍色值,則會出現相同的消息。 我用空()來檢查數組是否爲空,但它沒有幫助。當至少其中一個值不具有值時,使用php查找圖像中紅色,綠色和藍色陣列的最大值

我的代碼:

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]; 
    } 
} 
+0

未定義的偏移量不是指向空值,而是指向未設置的一個(鍵)。嘗試'isset()' –

+0

或者jsut檢查$ reds> 0是否對綠色和藍色完全相同 – Dave

+0

$ reds = array_fill(0,256,0); $ blues = array_fill(0,256,0); $ greens = array_fill(0,256,0); – user3108024

回答

3

就讓我們來看看一個顏色。問題在於你的for循環。因爲它只運行一次,即使$ reds是空的。 (它會按時運行)。爲什麼不使用foreach?

$red_max = 0; //initialize 
foreach ($reds as $value) { 
    if ($value > $red_max) { $red_max = $value; } 
} 

我想你可以應用這個不同的顏色。

+0

謝謝!問題出在for循環中。 – user3108024

1

函數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); 
} 
相關問題