PHP  »  Articoli  »  Grafica e Php 

Come creare grafici da un array con PHP e le librerie GD

di: Claudio Garau     04 Dicembre 2008

In questa breve trattazione vedremo come sia possibile creare facilmente un comune grafico basato su griglie, barre e percentuali come nell'esempio riportato dall'immagine sottostante.

Figura 1: Grafico dinamico di esempio

Grafico dinamico di esempio

Per far questo sarà sufficiente ricorrere a PHP, alle librerie GD ed in particolare alle numerosissime funzioni messe a disposizione da questo linguaggio per la gestione e la manipolazione delle immagini.

La funzione per la creazione dei grafici

Al fine di descrivere una possibile procedura per la creazione dei grafici, verrà proposta una funzione in grado di generare un'immagine completa a partire dai valori contenuti all'interno di un array. Innanzitutto, sarà messo a disposizione l'intero codice che costituisce l'applicazione per poi descriverne i diversi passaggi, i commenti aiuteranno comunque a riconoscere le diverse funzionalità svolte all'interno del listato.

<?php
# definizione della funzione e delle variabili
function crea_grafico($array)
{
# controllo sulla presenza, sull'entità e sulla validità dell'array
    if (!@isset($array) || @empty($array) || @count($array) > 20)
    {
# valore di ritorno in caso di array assente o non valido
        return FALSE;
    }

   # ricerca del valore massimo all'interno dell'array
 $valore_massimo = @max($array);
        # conversione dei valori dell'array in percentuali fatto 100 il valore massimo
    $nuovo_array = array();
    foreach ($array as $val)
    {
        $nuovo_array[] = @intval($val / $valore_massimo * 100);
    }

   //creazione di un'immagine 450(larghezza) * 150(altezza)
    $immagine = @imagecreatetruecolor(450, 150);

   # definizione dei colori degli elementi del grafico (valori RGB esadecimali)
    # colore: antiquewhite
    $colore_di_sfondo = @imagecolorallocate($immagine, 250, 235, 215);
    # colore: lightslategray
    $colore_griglia = @imagecolorallocate($immagine, 119, 136, 153);
   # colore: olivedrab
    $colore_barre = @imagecolorallocate($immagine, 107, 142, 35);
   # colore: navy
    $colore_testo = @imagecolorallocate($immagine, 0, 0, 128);

   # riempimento dell'immagine con il colore di sfondo
    @imagefill($immagine, 0, 0, $colore_di_sfondo);

    
   # creazione della griglia
    # creazione delle linee orizzontali
    for ($i=1; $i<=10; $i++)
    {
        @imageline($immagine, 0, $i*10+40, 450, $i*10+40, $colore_griglia);
    }

   # creazione delle linee verticali
    $spazio = @intval(450 / @count($nuovo_array));
    for ($i=1; $i<=@count($nuovo_array); $i++)
    {
        @imageline($immagine, $i*$spazio, 40, $i*$spazio, 150, $colore_griglia);
    }

   # disegno del grafico
    for ($i=0; $i<@count($nuovo_array); $i++)
    {
        $j = @intval($spazio/2) -1 + $spazio*$i;
        @imagefilledrectangle($immagine, $j, 150, $j+3, 150-$nuovo_array[$i], $colore_barre);
@imagestringup($immagine, 2, $j-5, 150-$nuovo_array[$i]-10,  $nuovo_array[$i].'%',$colore_testo);
    }

   # definizione del tipo di contenuto MIME
    @header("Content-type: image/png");
   # restituzione in output dell'immagine
    @imagepng($immagine);
   #liberazione della memoria associata all'immagine
    @imagedestroy($immagine);
}
?>

Il codice proposto può apparire un po' lungo ma non è di certo complesso, le funzioni utilizzate e in particolare quelle dedicate da PHP alle librerie GD sono invece numerose e meritano di essere descritte nel dettaglio.

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti