2009-02-06 2 views
1

Мне нужен примерный алгоритм, который будет рисовать пиксели по одному в системе на основе сетки (x, y), а также окрасить их на основе значения rbg на основе двоичных данных, которые предоставляются в некоторой форме. Я ищу что-либо, написанное на php или php-подобном языке, таком как C, но это не использует какую-либо библиотеку или графическую карту api, поскольку я кодирую php.Алгоритм пиксельного рисования

Вот то, что я написал в PHP, который использует случайные значения цвета, но она занимает 15 секунд, чтобы сделать в HTML холсте:

<?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);'; 
    } 
} 
?> 
+1

Дополнительная информация: Генерация кода для создания пикселей составляет 99,9% от 15 секунд. –

+0

было бы намного быстрее, если вы его выгрузили. Выполняйте работу в цикле while, но перемещайте эхо вне и ниже цикла. – aleemb

ответ

0

Казалось вы пытаетесь вывести команды JavaScript для др awing на теге <canvas>. Более быстрый способ рисования пикселей может заключаться в использовании moveTo и lineTo. Кстати, почему вы не являетесь внешним циклом цикла for?

ли не

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

кажется более естественным?

+0

Хорошая точка с циклом for, хотя даже если я использую moveTo или lineTo, это не то же самое. Я имею в виду, как я могу сделать это, не создавая 76800 или более правил javascript для определения каждого пикселя. И я должен определить каждый из них, потому что в большинстве случаев все они будут разными. –

2

Не совсем уверен, я вполне понимаю ваш вопрос, но .. РНР функции GD, которые включают изображения выделяют и SetPixel вызовов, рисование линий и т.д .. проверьте here

ой да imagemagick также для более экзотических применений

0

Проблема в том, что вы генерируете код для каждого пикселя. Вместо этого, почему бы не написать код пиксельной информации в ваш любимый формат изображения, а затем отобразить это на странице? Это наиболее разумное (для меня) алгоритмическое решение ... Я не уверен, что оно будет вписываться в то, что вы пытаетесь сделать.

0

Я не могу использовать формат изображения, потому что он не эффективен для моего использования. Я ищу пример кода, в котором изображение может отображаться на основе данных, поэтому я могу получить представление о том, как делать то, что я делаю, со скоростью быстрее, чем 15 секунд на рендеринг. Вложенные циклы, которые я включил выше, являются способом замедления.

Смежные вопросы