문제

그리드 기반 (x, y) 시스템에서 한 번에 하나씩 픽셀을 그릴 수있는 예제 알고리즘이 필요하며 일부 형태로 제공되는 이진 데이터를 기반으로 RBG 값을 기반으로 색상을 색칠합니다. PHP로 작성된 내용이나 C와 같은 언어와 같은 PHP로 작성된 내용을 찾고 있지만 PHP로 코딩하는 것처럼 어떤 종류의 라이브러리 또는 그래픽 카드 API를 사용하지 않습니다.

다음은 PHP로 쓴 내용입니다. 임의의 색상 값을 사용하지만 HTML 캔버스에서 렌더링하는 데 15 초가 걸립니다.

<?php
$r_max = 240;
$c_max = 320;
$row = -1;//-1 to offset while
while ($row<$r_max){
    ++$row;
    for($column=0; $column<=$c_max; ++$column)
    {
    echo 'ctx.fillStyle = "rgb(', rand()%255, ',', rand()%255, ',', rand()%255, ')";';
    echo 'ctx.fillRect(', $column, ',', $row, ',1,1);';
    }
}
?>
도움이 되었습니까?

해결책

당신은 당신이 <canvas> 꼬리표. 픽셀을 그리는 더 빠른 방법은 사용하는 것입니다. moveTo 그리고 lineTo. BTW, 왜 루프를 위해 외부 루프 A가 아닌가?

그렇지 않습니다

for($row=0; $row<=$r_max; ++$row) {
    for($column=0; $column<=$c_max; ++$column) {
        # draw pixel
    }
}

더 자연스럽게 보입니까?

다른 팁

PHP는 이미지 할당 및 SetPixel 호출, 라인 그리기 등을 포함하는 GD 기능을 가지고 있습니다. 여기

아, 그래 Imagemagick 또한 더 이국적인 용도로

문제는 각 픽셀에 대한 코드를 생성한다는 것입니다. 대신 코드에 픽셀 정보를 좋아하는 이미지 형식에 작성한 다음 페이지에 표시하지 않겠습니까? 그것은 가장 합리적인 (나에게) 알고리즘 솔루션입니다 ... 그것이 당신이하려는 일에 적합한 지 잘 모르겠습니다.

이미지 형식은 사용에 효율적이지 않기 때문에 이미지 형식을 사용할 수 없습니다. 데이터를 기반으로 이미지가 표시 될 수있는 예제 코드를 찾고 있으므로 렌더 당 15 초 더 빠른 속도로 수행하는 작업을 수행하는 방법에 대한 아이디어를 얻을 수 있습니다. 위에 포함 된 중첩 루프는 느리게하는 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top