Inserire testo in immagine

di il
1 risposte

Inserire testo in immagine

Buongiorno,

Uso una scheda Raspberry pi3 con webcam per catturare immagini che poi invio al mio sito;  devo essere sincero non sempre ho capito gli script php.

Sono riuscito ad acquisire le immagini panoramiche e ora ho costruito un piccolo gadget con una ESP32 + DHT11 che mi invia sempre nella stessa directory dell'immagine un piccolo file di testo contenente dati di temperatura e umidita' gia come char .

entrambi posso vederli in maniera distinta su due schede ma ora volevo fare un merge per avere tutto su una scheda ma il risultato è stato una pagina nera!!

il php per vedere i dati temp. e hy è il seguente

<?php
$filename = 'DHT11.txt';
$handler = fopen($filename, 'r');
if (false === $handler) {
    printf('Impossibile aprire il file %s', $filename);
    exit;
}
$size = 1024;
while (!feof($handler)) {
    $content = fread($handler, $size);
    echo $content;
}
fclose($handler);
?>

mentre per vedere l'immagine con le relative scritte è questo

<?php
$img="webcamx.jpg"; // file contenente l'immagine
$logo="newlogo2.png"; // file logo in alto a destra
$tables="tables5.png"; // bande sup e inf

$nome_immagine= imagecreatefromjpeg($img);			
$nome_immagine1=imagecreatefrompng($tables); // file barre sup e inf
$nome_immagine2=imagecreatefrompng($logo); 		

// x la barra inferiore
//  rigo - scritta contenente la  data e l'orario dell'ultimo scatto
$text2="      Ultima immagine: " . date("d/m/Y H:i:s", filemtime($img));
 
//  rigo - scritta contenente dati liberi
$text4=" Webcam Raspberry  -- loc. Grotta di Villazzano (TN)  "; 

list($width, $height, $type, $attr) = getimagesize($logo);
$logow=$width;
$logoh=$height;

$font1 =  "tahoma.ttf";
$font2 = "Merveille.ttf";
$colore_testo = imagecolorallocate($nome_immagine,255,255,255); //bianco
$colore_testo2 = imagecolorallocate($nome_immagine,255,0,0); //rosso

imagecopy($nome_immagine, $nome_immagine1, 0, 0, 0, 0, 1280,768);
imagecopy($nome_immagine, $nome_immagine2, 3, 47, 0, 0, $logow, $logoh);

imagefttext ($nome_immagine, 14, 0, 80, 755, $colore_testo, $font1, $text3.$text4." - ");
imagefttext ($nome_immagine, 14, 0, 650, 755, $colore_testo, $font1, $text2);

header("Content-type: image/jpeg");  
imagepng($nome_immagine); 
imagedestroy($nome_immagine);  
?>

visti i risultati evidentemente inserendo il primo nel secondo non deve essere possibile oppure sto sbagliando alla grande; chiedo cortesemente se qualcuno potesse darmi un aiutino per uscire da questa pasticcio, allego anche una delle immagini

grazie

 

1 Risposte

  • Re: Inserire testo in immagine

    Risolto, posto il php completo, se suggerimenti grazie

    <?php
    $img="webcampi.jpg"; // file contenente l'immagine
    $logo="newlogo2.png"; // file logo in alto a destra
    $tables="tables5.png"; // bande sup e inf
    
    $filename = 'DHT11.txt';
    $handler = fopen($filename, 'r');
    if (false === $handler) {
        printf('Impossibile aprire il file %s', $filename);
        exit;
    }
    $size = 1024;
    while (!feof($handler)) {
    $content = fread($handler, $size);
    //echo $content;                
    }
    $input=$content;
    //scritta contenente la  data e l'orario dell'ultimo invio
    $text2="  " . date("d/m/Y ", filemtime($filename)); //data ultimo invio
    $text3="  " . date("H:i", filemtime($filename));       //ora ultimo invio
    $linea2="          ";
    $linea3="  --  ";
    
    $nome_immagine= imagecreatefromjpeg($img);			
    $nome_immagine1=imagecreatefrompng($tables); 	// file barre sup e inf
    $nome_immagine2=imagecreatefrompng($logo); 		
    
    $text1=" Mia_via"; // localita rilievi
    $data=explode(' ',$input);
    //$T=$data[0];
    $valx=($data[1]);
    //$H=($data[5]);
    $val2=$data[6];
    $text4=" Temperatura ";
    $text5="Umidita' ";
    $val1=substr($valx,0,3);
    $cent="C";
    
    list($width, $height, $type, $attr) = getimagesize($logo);
    $logow=$width;
    $logoh=$height;
    
    $font1 =  "tahoma.ttf";
    $font2 = "Merveille.ttf";
    $colore_testo = imagecolorallocate($nome_immagine,255,255,255); //bianco
    $colore_testo1 = imagecolorallocate($nome_immagine,255,0,0); //rosso
    
    imagecopy($nome_immagine, $nome_immagine1, 0, 0, 0, 0, 1600,1200);
    imagecopy($nome_immagine, $nome_immagine2, 3, 47, 0, 0, $logow, $logoh);
    
    imagefttext ($nome_immagine, 24, 0, 80, 1180, $colore_testo1, $font1, $text1." - ". $text2. " - ". $text3);
    imagefttext ($nome_immagine, 24, 0, 800, 1180, $colore_testo1, $font1, $text4. $val1);
    imagefttext ($nome_immagine, 24, 0, 1150, 1180, $colore_testo1, $font1, $text5. $val2);
    //imagefttext ($nome_immagine, 24, 0, 680, 1180, $colore_testo1, $font1, $linea3);
    
    header("Content-type: image/jpeg");  
    imagepng($nome_immagine); 
    imagedestroy($nome_immagine);  
    ?>
    
    
Devi accedere o registrarti per scrivere nel forum
1 risposte