2009-02-06 5 views
1

J'ai besoin d'un exemple d'algorithme qui dessine les pixels un à la fois sur un système basé sur une grille (x, y) et les colorise en fonction d'une valeur rbg basée sur des données binaires fournies sous une forme quelconque. Je cherche n'importe quoi écrit en php ou un langage de php tel que C, mais cela n'utilise aucune sorte de bibliothèque ou carte graphique api, car je code en php.Algorithme de dessin de pixel

Voici quelque chose que je l'ai écrit en php, qui utilise des valeurs de couleur aléatoire mais il faut 15 secondes pour rendre dans une toile 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

Un détail supplémentaire: générer le code pour faire les pixels est ce qui prend 99,9% des 15 secondes. –

+0

ce serait beaucoup plus rapide si vous le lot. Faites le travail dans la boucle while mais déplacez l'écho à l'extérieur et en dessous de la boucle. – aleemb

Répondre

0

Il semble que vous essayez de JavaScript sortie pour les commandes dr impressionnant sur une étiquette <canvas>. Un moyen plus rapide de dessiner les pixels pourrait être d'utiliser moveTo et lineTo. Btw, pourquoi tu n'es pas aussi une boucle externe?

Est-ce que ne

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

semblent plus naturel?

+0

bon point avec la boucle for cependant même si j'utilise moveTo ou lineTo n'est pas encore presque le même. Je veux dire comment puis-je faire cela sans avoir à créer 76800 ou plus règle javascript pour définir chaque pixel. Et je dois les définir car dans la plupart des cas ils seront tous différents. –

2

Pas vraiment sûr que je comprends bien votre question, mais .. PHP a fonctions de GD qui incluent l'image et allouer des appels setPixel, dessin etc .. ligne vérifier here

oh et oui imagemagick aussi pour des usages plus exotiques

0

Le problème est que vous générez du code pour chaque pixel. Au lieu de cela, pourquoi ne pas avoir le code écrire les informations de pixel à votre format d'image préféré, puis l'afficher dans la page? C'est la solution algorithmique la plus raisonnable (pour moi) ... Je ne sais pas si ça va rentrer dans ce que vous essayez de faire.

0

Je ne peux pas utiliser un format d'image, car il n'est pas efficace pour mon utilisation. Je cherche un exemple de code où une image pourrait être affichée en fonction des données, juste pour que je puisse avoir une idée de comment faire ce que je fais à un rythme plus rapide que 15 secondes par rendu. Les boucles imbriquées que j'ai incluses ci-dessus sont un moyen de ralentir.