2012-01-11 56 views
1
<?php 

$img = imagecreatefrompng("cuack.png"); 

$imagew = imagesx($img); 
$imageh = imagesy($img); 

$width = array(); 
$heigth = array();   
$x = 0; 
$y = 0; 

for ($x = 0; $x <= $imagew; $x++) { 

    $rgba = imagecolorat($img,$x,1); 
    $alpha = ($rgba & 0x7F000000) >> 24; 

    var_dump($alpha); 
} 

for ($x = 0; $x <= $imageh; $x++) { 

} 

我試圖檢查透明像素的圖像中的每個像素,但我收到以下錯誤:我在圖像像素的這個循環中做了什麼錯誤?

說明:imagecolorat()[function.imagecolorat]:1920,1超出邊界在C:\ WWW \的index.php上線18

+0

正如一些建議,在這裏張貼,當你把你的代碼中確保你看看預覽,看看它是否看起來格式良好。如果人們可以快速查看代碼並理解它,則更有可能獲得答案。 – jprofitt 2012-01-11 15:40:14

回答

5

邊界從0開始,從而延伸到在每個方向寬度 − 1和高度 − 1。因此,<= $imagew需要爲< $imagew。同樣適用於<= $imageh

寬度和高度只是告訴你像素的許多行和列怎麼有,最大的行或列指數(這是一個更低)。

走路的整體形象,只使用兩個嵌套的循環:

for ($y = 0; $y < $imageh; $y++) { 
    for ($x = 0; $x < $imagew; $x++) { 
    // do whatever you want with them in here. 
    } 
} 
+0

太棒了!對不起,跛腳的問題,我有3天的PHP。任何想法如何混合$ x和$ y組合來檢查圖像中的每個像素?我試圖合併這些值,但我做錯了。 – user1143241 2012-01-11 15:46:40

+0

請參閱編輯。不過,通常針對不同的問題提出不同的問題。 – Joey 2012-01-11 15:50:16

+0

你是一個拯救生命的伴侶!非常感謝!很好學習。 – user1143241 2012-01-11 15:58:49

相關問題