doubingjian2006 2017-01-23 14:49
浏览 43

来自Ipcam的图像的PHP脚本

i have this script, that extracts the last images in a folder, delete its contents and produces a new file (webcam.jpg). It works perfectly if the file (.php) is inserted in the same folder of images (.jpg). If the images are in a sub-directory (example images in /cam/snap and .php in /cam), it doesn't work. I tried to print the array (print_r($directory)) and it's correct, but the webcam.jpg file isn't produced and the pictures are not erased, where am I wrong?

*I wish that the webcam.jpg files were produced in the same folder as the php script

(Script found on the net) Thanks in advance

    <?php
header("Refresh: 60; url=" . $_SERVER["PHP_SELF"]);

// prepara l'array per i nomi dei file
$directory = array();

// prepara l'handler per la directory

$handler = opendir("./snap");

// apre la directory e legge i singoli nomi dei file
while ($file = readdir($handler)) {

// se il nome del file contiene il testo iniziale imposto dalla ipcamera lo mette nell'array
if (substr("$file", 0, 1) == "P") {
    $directory[] = $file;

}
}

// chiude l'handler
closedir($handler);

// ordina la lista dei file per nome (il piu' nuovo sara' l'ultimo)
sort($directory);

//  conta i file
$fileCount  = count($directory);
print_r ($directory);



// copia il file piu' nuovo in webcam.jpg
  // $index corrispondera' all'ultimo elemento dell'array (il primo e' 0)
  $index = $fileCount - 1;
  $fileDaCopiare = $directory[$index];
  copy($fileDaCopiare, 'webcam.jpg');


  // cancella tutti i file i cui nomi sono nell'array
  for($index=0; $index < $fileCount; $index++) {
        $fileDaCancellare = $directory[$index];
      unlink($fileDaCancellare);
  }

$nome_immagine="webcam.jpg";         // file contenente l'immagine
$nome_testo="testo.txt";         // file contenente le scritte

$fp = fopen($nome_testo,"r")
  or die("impossibile aprire il file testo.txt.");
$testo_sinistra=fgets($fp,100);         // nella prima riga la scritta allineata a sinistra
$testo_destra=fgets($fp,100);         // nella seconda riga la scritta allineata a destra
if ( $testo_destra = "data" )
  {
  setlocale(LC_TIME,"it_IT");
  $testo_destra=strftime ("%a %d %b %Y %H:%M:%S", filemtime($nome_immagine));
  }
fclose($fp);

header("Content-type: image/png");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$im  = imagecreatefromjpeg($nome_immagine);
//$black = imagecolorallocate($im, 0, 0, 0);
//$white = imagecolorallocate($im, 255, 255, 255);
$colore_barra = imagecolorallocate($im, 153, 102, 51);      // colore della barra formato RGB
$colore_testo  = imagecolorallocate($im, 255, 255, 255);   // colore per testo
$x=imagesx($im);
$y=imagesy($im);

$font = "VeraBd.ttf";
$size = 10;                     // dimensione del testo
$altezza_barra = 25;                  // dimensione della barra


imagefilledrectangle($im, 0, $y-$altezza_barra, $x-1, $y-1, $colore_barra);

$bbox = imagettfbbox ($size, 0, $font, $testo_sinistra);
$dy  = (($bbox[1] - $bbox[7]) / 2);
imagettftext($im, $size, 0, 5, $y-($altezza_barra / 2) + $dy - 1, $colore_testo, $font, $testo_sinistra);

$bbox = imagettfbbox ($size, 0, $font, $testo_destra);
$dx  = ($bbox[2] - $bbox[0]);
imagettftext($im, $size, 0, $x-5-$dx, $y-($altezza_barra / 2) + $dy - 1, $colore_testo, $font, $testo_destra);

$info = getimagesize($nome_immagine);                  //carica immagine                
//$logo = imagecreatefrompng("logo1.png") ;          //carica 1° logo - h/= cartella - logo1.png = nome del file e estensione.png
//$logo2 = imagecreatefrompng("logo2.png") ;   //carica 2° logo - h/= cartella - logo2.png = nome del file e estensione.png
//$logo3 = imagecreatefrompng("logo3png") ;   //carica 3° logo - h/= cartella - logo3.png = nome del file e estensione.png
//imagecopy($im, $logo, 0, $info[1]-165, 0, 0, 181, 140); //posizione 1°logo(da sx= 5$logo, 1610 ,sposta dal fondo= -0,sposta da sinistra= 0)dimensione 1°logo(300=larghezza area assegnata,230=altezza area assegnata)
//imagecopy($im, $logo2, 5, $info[1]-150, 0, 0, 150,38); //posizione 2°logo(da sx= 700 ,dal fondo= -65)dimensione 2°logo(156=larghezza ,38=altezza )
//imagecopy($im, $logo3, 5, $info[1]-210, 0, 0, 150,53); //posizione 3°logo(da sx= 865, dal fondo= -80)dimensione 3°logo(150=larghezza ,53=altezza )
//Help//$logo, 0 Variare il valore 0 per spostare dal fondo verso l'alto
//Help//$info[1]-165 Fa scendere o salire il logo+zona assegnata
//Help//0 Sposta a dx dentro alla zona assegnata
//Help// 0 Sposta in alto dentro alla zona assegnata
//Help// 181 Definisce la larghezza della zona assegnata
//Help// 140 Definisce l'altezza della zona assegnata

imagepng($im);
imagedestroy($im);
?>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
    • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
    • ¥60 pb数据库修改与连接
    • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
    • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
    • ¥20 神经网络Sequential name=sequential, built=False
    • ¥16 Qphython 用xlrd读取excel报错
    • ¥15 单片机学习顺序问题!!
    • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
    • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)