Il mio prof di matematica ci ha proposto questo quesito. Partendo da un file di testo contenente una matrice con le tonalità dei singoli pixel (sia tonalità di grigio che RBG) devo costruire l'immagine iniziale.
con mathcad (che ha usato il prof) non ci riesco perchè mi fa questioni con la grandezza della matrice così mi sono buttato sul php.
L'algoritmo per passare dalla matrice alla posizione dei signoli pixel e per ricavarne le tonalità l'ho costruito correttamente, il problema sta quando vado a usare le librerie gd per trasformarli in una immagine vera e propria.
Codice PHP:
<?
$matrice = "prova.txt";
$handle = fopen ($matrice, "r");
$immagine = fread ($handle, filesize ($matrice));
fclose ($handle);
$immagine = str_replace(Chr(13), "§", $immagine);
$im_pixel = explode("§", $immagine);
$max = count($im_pixel);
$righe = 211;
$cols = 150;
$pos_x = 0;
$pos_y = 1;
fino a qui apre il file di testo contenente la matrice e costruisce l'array contenente le tonalità di ogni pixel.
Codice PHP:
$speriamo = imageCreate($righe, $cols);
for ($i > 0; $i < $max; $i++) {
if ($pos_x > 150) { $pos_x = 1; $pos_y++; }
$color[$i] = imageColorAllocate($speriamo, $im_pixel[$i], $im_pixel[$i], $im_pixel[$i]);
imageLine($speriamo, $pos_x, $pos_y, $pos_x, $pos_y, $color[$i]);
$pos_x++;
}
header("Content-type: image/png");
imagePng($speriamo);
imageDestroy($speriamo);
?>
e qui suppongo stia l'inghippo. gli faccio creare l'immagine della dimensione desiderata e con un ciclo for gli dico
1. di allocare la tonalità di grigio associata al pixel $im_pixel[$i] in un nuovo array $color[$i].
2. di creare una linea (che poi è un punto) di coordinate $pos_x e $pos_y e di colore $color[$i].
Quello che ne esce è un'immagine di grandezza esatta ma interamente nera.
Come ho già detto sono abbastanza sicuro della bontà dell'algoritmo che assegna coordinate e tonalità ai pixel visto che con un echo i risultati sono quelli sperati.
spero di essere stato abbastanza chiaro. grazie per le risposte