2012-04-14 1 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

+0

$ pixels 배열의 길이까지 반복적으로 보이지만 데이터를 가져 오는 것 $ 데이터 배열에서. 가장 먼저 살펴볼 것은 두 배열의 길이가 무엇인지입니다. 더 일반적으로, 내가 이런 종류의 것을 디버깅 할 때 나는 header와 imagepng 라인을 주석 처리한다. 그런 다음, out은 디버깅 메시지를 루프에서 출력하여 정확히 무슨 일이 일어나는지 볼 수 있습니다. –

+0

이 문제가 발생한 다른 사용자에게 제공됩니다. 수정 사항이 있습니다. 'imagecreate' 대신'imagecreatetruecolor'를 사용하십시오. 'imagecreall'를 사용할 때'imagecolorallocate'는 255 색까지만 할당 할 수 있습니다. 'imagecreatetruecolor '에는 그러한 제한이 없습니다. – ndmweb

답변

3

이 문제가있는 다른 사용자에게 제공됩니다. 수정 사항이 있습니다. imagecreate 대신 imagecreatetruecolor을 사용하십시오. imagecolorallocateimagecreate을 사용할 때 255 색까지만 할당 할 수 있습니다. imagecreatetruecolor에는 이러한 제한이 없습니다.

+1

고마워, 2 시간이 지났어. :) –

관련 문제