2012-04-14 48 views
1

我有一個JSON對象中的像素數據數組。我正在嘗試使用PHP將像素數據重繪爲GD圖像。PHP GD從數組中繪製像素數據停止中間循環

我使用類似如下(注意出於測試目的,我在5000開始的循環索引,大約一半到數組。)

$im = imagecreate($w,$h); 
$i=5000; 
while($i < count($pixels)){ 
    $item = $data[$i]; 
    $rgb = $item['rgb']; 
    $pos = $item['pos']; 
    $col = imagecolorallocate($im, $rgb[0],$rgb[1],$rgb[2]); 
    imagesetpixel($im , $pos[0], $pos[1], $col); 
    $i++; 
} 
header("Content-Type: image/png"); 
imagepng($im); 

看來我的劇本是隻在裁剪出來之前將它放到陣列的下方,並將圖像轉儲出來而不會出錯。

下面是當我通過數組長度的一半開始數組索引時的輸出。我得到了圖像的一小部分。

enter image description here

這是由於內存?或超時?該頁面不需要很長時間來加載或任何...

+0

如果您添加'error_reporting(E_ALL);',使用ini_set('display_errors',true)啓用錯誤報告會出現什麼情況' – KillerX 2012-04-14 07:15:03

+0

您好像正循環到$ pixels數組的長度,但是獲取數據來自$ data數組。我期待的第一件事是這兩個陣列的長度是多少。更一般地說,當我調試這種事情時,我會註釋掉header和imagepng行。然後,out可以在循環中輸出調試消息以查看究竟發生了什麼。 – 2012-04-14 07:18:08

+0

好的,對於這個問題的其他人。這是修復。 使用'imagecreatetruecolor'而不是'imagecreate'。 當使用'imagecreate'時,'imagecolorallocate'似乎只能分配255個顏色。而'imagecreatetruecolor'沒有這樣的限制。 – ndmweb 2012-04-14 07:19:46

回答

3

好的,對於任何其他人有這個問題。這是修復。使用imagecreatetruecolor而不是imagecreate。當使用imagecreate時,imagecolorallocate似乎只能分配多達255種顏色。而imagecreatetruecolor沒有這樣的限制。

+1

謝謝你,失去2小時這樣:) – 2016-01-03 22:14:05