Mehrere Bilder einer CAM in ein Bild zusammenführen und per Mail verschicken

Moin zusammen,

hier ein Skript, das es ermöglicht, aus einer Kamera (Standard-China-Modell mit snapshot.cgi etc.) mehrere Aufnahmen in frei wählbarem Zeitabstand zu machen, diese dann zu einem Bild zusammenzuführen und dann per Mail zu verschicken. Am unteren Bildrand rechts wird dann noch ein Zeitstempel eingefügt.

Ich hatte das Problem, dass die Bilder der Haustürcam teilweise unbrauchbar waren, weil die abzubildende Person gerade mit dem Rücken zu Cam stand oder sich aus dem Bild heraus bewegte. Nun mache ich 4 Bilder im Abstand von 1,5 Sekunden - das klappt ganz gut. Der Mitteilteil (Zusammenbau von mehreren JPGs) ist übrigens von wbo, der schon einmal was ähnliches gepostet hatte.


<?
$anz=5;     	    // Anzahl Bilder, die gemacht und dann zusammengefügt werden sollen
$deleteorg=TRUE;  // Einzelbilder wieder löschen ?
$pause=1500;       // Pause zwischen den Aufnahmen in MSec

$ip=GetValue(31707 /*[Haustür\Kamera\IPAdresse]*/);
$filecams=ARRAY();

//********** Eine Reihe von Bildern machen im Abstand von $pause Msec  *********
for ( $i=0;$i<$anz;$i++)
{
		$url = "http://$ip:2011/snapshot.cgi?user=admin&pwd=strenggeheim"; // Image-Datei
		$time=date("Y").date("m").date("d")."-".date("His");
		$file = "c:\\ip-symcon\\webfront\\user\HaustuerBilder\\K_".$time.".jpg";
		$ch = curl_init($url);
		$fp = fopen($file, 'wb');
		curl_setopt($ch, CURLOPT_FILE, $fp);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_exec($ch);
		curl_close($ch);
		fclose($fp);
		$filecams[$i]=$file;
		IPS_SLEEP($pause);
}

//***************** Bilder zu einem Bild zusammenbauen für E-Mail **************
$aim = @ImageCreateTruecolor(640, $anz * 480);
for ($i = 0; $i < $anz; $i++)
{
		$z=0;
      DO
      {
	      $im = @ImageCreateFromJPEG ($filecams[$i]);
	      $z++;
		}
      WHILE ( is_bool($im) && $z<10);
      IF ( !is_bool($im) )
		{
			$y = $i * 480;
			ImageCopy($aim, $im, 0, $y, 0, 0, 640, 480);
			ImageDestroy($im);
		}
		IF ($deleteorg)
		{
			unlink ($filecams[$i]);
		}
}
$time=date("Y").date("m").date("d")."-".date("His");
$filenameCams = "c:\\ip-symcon\\webfront\\user\HaustuerBilder\\EMail-Fotos\\S_".$time.".jpg";
$width = imagesx($aim);
$height = imagesy($aim);
$black = imagecolorallocate($aim, 0x00, 0x00, 0x00);
$white = imagecolorallocate($aim, 0xff, 0xff, 0xff);
imagefilledrectangle($aim, 0, $height, 330, $height-30, $black);
$font_file = 'c:\\windows\\fonts\\arial.ttf';
$text="Haustürklingel ".date("d.m.Y H:i:s");
imagefttext($aim, 14, 0, 10, $height-10, $white, $font_file, $text);
ImageJpeg($aim, $filenameCams);
ImageDestroy($aim);

//***************** E-Mail mit Anhang versenden *************************************
$dat=date("d.m.Y");
$tim=date("H:i:s");
$text="Es hat am $dat um $tim an der Tür geklingelt. Anbei die Bilder der Kamera:";
$kt="Haustürklingel $dat $tim";
//SMTP_SendMailAttachment(52053 /*[Anwesenheitssteuerung\E-Mail-Instanz\E-Mail senden (SMTP)]*/,$kt,$text,$filenameCams);

Vielleicht kann’s jemand gebrauchen. Viel Spaß damit!

Gruß
Walter