• Stampa

 Pubblicare immagini della WEBCAM/IPCAM sul proprio sito con PHP

 

webcam publish

 

 

Quasi la totalità delle "IPCAM" in commercio hanno la possibilità di esportare le immagini tramite FTP con uno schedulatore o a tempo.

Questo ci permette di pensare di pubblicare queste immagini su di un sito web, blog... etc.

Dopo aver configurato l'apparato e verificato che effettivamente viene salvata l'immagine nella cartella corretta dell'FTP sorge un problema. Ogni volta che l'apparato salva l'immagine crea una nuova immagine con l'orario e contatore.

 

Come facciamo a visualizzare solo l'ultima immagine e magari aggiungerci un testo e i riferimenti dell'orario?

Possiamo risolvere la cosa ricorrendo al linguaggio PHP che ci permette di eseguire una serie di istruzioni quando la pagina viene caricata.

 

E se utilizziamo un CMS come joomla o altri?

Semplicemente si installano dei plugin che permettono l'inserimento di codice PHP o altri linguaggi di programmazione.

Per JOOMLA è posssibile installare il plugin "sourcerer" che permette di inserire codice tra i tag " source " e " /source " (con al posto delle "  la parentesi graffa).

 

IL CODICE PHP

 Sinteticamente questo script opera in questo modo: quando viene aperta una pagina web, non fa altro che cercare l'immagine caricata più recente in base alla numerazione e la data/ora in formato americano, la salva in un altra cartella, la rielabora aggiungendo testo e ritoccando i colori e poi elimina tutte le immagini caricate per poi visualizzarla. Nulla vieta di rielaborare questo script per catalogare le immagini giornalmente invece di cancellarle.

 

<?php

// definiamo delle variabili

$ts = 0;

// prefisso del file che per ogni IPCAMERA cambia
$img = "00A3F820643F(IPCAMERA)_0_";

//Percorso FTP del sito dove vengono copiate le immagini della camera
$dir = "./ipcamera/";

//Ricerca dell'ultimo file copiato della IPCAM escludendo il prefisso del nome del file e utilizzando la data e l'ora per pescare l'ultimo
if (is_dir("$dir")) {
if ($dh = opendir("$dir")) {
while (($file = readdir($dh)) !== false) {
if(is_file("$dir/$file")) {
$tsf = filemtime("$dir/$file");
if($tsf >= $ts) {
$img = $file;
$ts = $tsf;
}
}
}
closedir($dh);
}
}

//salviamo il file trovato più recente ($img) con il percorso ($dir) nella variabile $originale

$originale = "$dir/$img";

//Impostiamo il nuovo file che conterrà l'ultima immagine
$copia = './ipcamera/immagine/img.jpg';

//se ha precedentemente trovato il file nella ricerca viene rielaborato altrimenti visualizza quello precedente

if(is_file($originale)){

//importa da file l'immagine

$mia_img = imagecreatefromjpeg($originale);

//imposta il colore che avrà il testo in overlay

$colore_testo = imagecolorallocate($mia_img,255,0,0);

//sisitemano i colori RGB dell'immagine

imagefilter($mia_img, IMG_FILTER_COLORIZE, 10, 24, 20);

//vengono reperite le informazioni della data e dell'ora dal file che la IPCAM ha generato

$data= substr($img, 26, 14);

$anno= substr($data, 0, 4);

$mese= substr($data, 4, 2);

$giorno= substr($data, 6, 2);

$ora= substr($data, 8, 2);

$min= substr($data, 10, 2);

$sec= substr($data, 12, 2);

//il primo testo da applicare all'immagine

$testo = "www.centrodigravita.it";

//viene applicato il testo dove 225 è la posizione x e 5 è la posizione y

Imagestring($mia_img,10,225,5,$testo,$colore_testo);

//il primo testo da applicare all'immagine che consiste nell'ora e nella data

$testo =$ora.":".$min.":".$sec." ". $giorno . "/". $mese ."/". $anno;

//viene applicato il testo

Imagestring($mia_img,10,460,440,$testo,$colore_testo);

//viene impostata la qualità del file da salvare

$quality = 100;

//si salva l'immagine creata su file nel percorso-file $copia

imagejpeg($mia_img, $copia , $quality);

}

//vengono cancellati tutti i file nella cartella $dir ---------------  ATTENZIONE ---------------

$handle = opendir($dir);
    while (($file = readdir($handle)) !== false) {
  if(is_file($dir.$file)){
unlink($dir.$file);
}

}
closedir($handle);

 

//viene visualizzata l'immagine nella pagina web
print("<img src=\".\ipcamera\immagine\img.jpg\" border=\"2\" width=\"640\" height=\"480\">\n");
    
?>