Creare immagini dinamiche

spacca!  0 scarso!  0 versione stampa invia per email scheda utente totale visite  286
Utilizziamo la libreria gd di php per creare un immagine composta dinamica. In questo esempio proviamo a creare un documento di identità con i dati ricevuti da un form.

Il codice è funzionante ma incompleto, mi sono limitato a comporre i primi 3 campi del documento e la fototessera. Per tutti gli altri campi la logica è la stessa.

ci.php : contiene le funzioni per creare l'immagine
<?php

// dichiarazione del tipo di documento: un immagine jpeg
header("Content-type:image/jpeg");

// percorso del font da utilizzare
$font = "typenoksidi.ttf";

// dimensione del font
$font_size = 10.5;

// risorsa immagine da utilizzare come sfondo
$img = imagecreatefromjpeg('ci_vuota.jpg');

// creiamo il colore per il font
$nero = imagecolorallocate($img, 0, 0, 0);


/**
* parametri per la funzione imagettftext
*  - risorsa dell'immagine
*  - grandezza font
*  - angolazione
*  - posizione X
*  - posizione Y
*  - percorso font
*  - testo
*/
// creiamo e posizioniamo la stringa cognome
$cognome = isset($_REQUEST['cognome']) ? $_REQUEST['cognome'] : "Einstein";
imagettftext($img, $font_size, 0, 86, 48, $nero, $font, strtoupper($cognome));
// creiamo e posizioniamo la stringa nome
$nome = isset($_REQUEST['nome']) ? $_REQUEST['nome'] : "Albert";
imagettftext($img, $font_size, 0, 86, 70, $nero, $font, strtoupper($nome));
// creiamo e posizioniamo la stringa natoil
$natoil = isset($_REQUEST['natoil']) ? $_REQUEST['natoil'] : "14/3/1879";
imagettftext($img, $font_size, 0, 86, 92, $nero, $font, strtoupper($natoil));

// percorso dell'immagine fototessera
$foto = isset($_REQUEST['foto']) ? $_REQUEST['foto'] : "Albert_Einstein_Head.jpg";

// fototessera : recuperiamo le dimensioni originali della foto e creiamo la risorsa
list($width, $height) = getimagesize($foto);
$fototessera = imagecreatefromjpeg($foto);

/**
* parametri per la funzione imagecopyresized
*  - risorsa dell'immagine
*  - risorsa dell'immagine da aggingere
*  - posizione x sull'immagine principale
*  - posizione y sull'immagine principale
*  - posizione x dell'immagine da aggingere
*  - posizione y dell'immagine da aggingere
*  - width ridimensionato
*  - height ridimensionato
*  - width originale
*  - height originale
*
* Ridimensioniamo la fototessera e la posizioniamo sull'immagine principale
*/
imagecopyresized($img, $fototessera, 360, 40, 0, 0, 172, 190, $width, $height);

// Ora che tutto è stato posizionato possiamo creare l'iimagine finale
imagejpeg($img);

non ci resta che creare un form per l'inserimento dei dati e richiamare la pagina ci.php nel tag <img> passando tutti i dati del form

<?php
$query_string = '';
if (isset($_REQUEST['generaimmagine'])) {
    foreach ($_REQUEST as $key => $value) {
        $query_string .= urlencode($key) . '=' . urlencode($value) . '&';
    }
    $query_string = rtrim($query_string, '&');
}
?>
<style>
    form {
        line-height: 32px;
    }
    form label {
        display: inline-block;
        width: 140px;
        text-align: right;
        font-weight: bold;
        margin-right: 10px;
    }
</style>
<form method="post">
    <label>Cognome:</label>
    <input type="text" name="cognome" value="<?php echo isset($_REQUEST['cognome']) ? $_REQUEST['cognome'] : "Einstein"; ?>"/>
    <br/>
    <label>Nome:</label>
    <input type="text" name="nome" value="<?php echo isset($_REQUEST['nome']) ? $_REQUEST['nome'] : "Albert"; ?>"/>
    <br/>
    <label>Data di nascita:</label>
    <input type="text" name="natoil" value="<?php echo isset($_REQUEST['natoil']) ? $_REQUEST['natoil'] : "14/3/1879"; ?>"/>
    <br/>
    <label> </label>
    <input type="submit" name="generaimmagine" value="GENERA CARTA D'IDENTITA'"/>
</form>

<img src="ci.php?<?php echo $query_string; ?>" alt="cartaidentita"/>
 
 

Inserisci un commento

non sei loggato

CAPTCHA