Hier das aktuelle Script wie ich es im Moment verwende:
<?php
// aktuellstes Webcambild einer INSTAR Kamera aus einem Ordner ermitteln, mit einem Logo
// versehen und dem Browser als JPG übergeben
//
// hier die eigenen Parameter einstellen
$_folder_name = "domainname_de/webcambilder/scheuermattwiese"; // Ordnername fuer die Webcambilder mit Datum Unterordner, ausgehend vom Root Verzeichnis
// $_fixed_filename = "scheuermattwiese.jpg"; // falls Verwendung eines fixen Dateinamens fuer aktuelles Webcambild
$_fixed_filename = false; // false wenn die neuste Datei gesucht werden soll, ansonst den festen Dateinamen angeben
$_logo_path = "domainname_de/contao/webcam"; // Pfad zum Logo
$_logo_name = "domainname-300.jpg"; // Dateiname des Logos im JPG Format
// $_logo_name = false; // false setzten, wenn kein Logo auf Bild soll, ansonsten Dateinamen angeben
$_text = "Buchung & Infos unter www.domainname.de"; // Text der oben mittig aufs Bild soll
// $_text = false; // false setzten, wenn kein Text aufs Bild soll
// Website root absolut ermitteln, war für Provider Strato erforderlich
$website_root = substr($_SERVER['DOCUMENT_ROOT'], 0, strpos($_SERVER['DOCUMENT_ROOT'], "domainname_de"));
//
// hier geht es mit dem Verarbeiten los - keine Änderungen danach durchführen
//
// festen Dateinamen benutzten oder die neuste Datei ermitteln
if ($_fixed_filename) { // fester Dateiname für aktuellstes Bild des Tages auswählen
$bild = $website_root . $_folder_name . "/" . date("Ymd") . "/images/" . $_fixed_filename ;
} else { // neuste Datei im Ordner finden
$dir = $website_root . $_folder_name . "/" . date("Ymd") . "/images/";
$images = glob($dir . "*.jpg");
rsort($images);
// ACHTUNG: es wird nach den Dateinamen absteigend sortiert. D.h bei Instar fangen alle geplanten
// Aufnahmen mit dem Buchstaben P an. Wenn sich eine sonstige Datei mit einem Buchstaben nach dem P
// in dem Ordner befindet wird diese Datei ausgegeben!
$bild = $images[0];
}
if ($bild) { # Webcambild gefunden?
$dest = imagecreatefromjpeg($bild);
}
else { # kein Webcambild, daher eigenes Fehlerbild generieren
$errorbild = imagecreatetruecolor(1920, 1080); // Bildfläche für Text erzeugen
$white = imagecolorallocate($errorbild, 255, 255, 255);
$black = imagecolorallocate($errorbild, 0, 0, 0);
imagefilledrectangle($errorbild, 0, 0, 1920, 1080, $white); // Bildfläche mit Rechteck füllen
$font = $website_root . "/fonts/arial.ttf";
imagettftext($errorbild, 40, 0, 500, 500, $black, $font, "aktuell kein Webcambild gefunden."); // Text auf Bildfläche schreiben
$dest = $errorbild;
}
// Logo mit Bild verschmelzen oder nicht?
if ($_logo_name) {
$logo = $website_root . $_logo_path . "/" . $_logo_name;
// Bilder für Mergefunktion vorbereiten
$logofile = imagecreatefromjpeg($logo);
imagecopymerge($dest, $logofile, 1610, 907, 0, 0, 300, 163, 75); // Bild mit Logo verschmelzen
// hier eventuell Position und Größe des Logos anpassen !!!
};
// Text aufs Bild?
if ($_text) {
$im = imagecreatetruecolor(600, 40); // Bildfläche für Text erzeugen
$white = imagecolorallocate($dest, 255, 255, 255);
$black = imagecolorallocate($dest, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 600, 40, $black); // Bildfläche mit Rechteck füllen
$font = $website_root . "/fonts/arial.ttf";
imagettftext($im, 20, 0, 6, 26, $white, $font, $_text); // Text auf Bildfläche schreiben
imagecopymerge($dest, $im, 670, 00, 0, 0, 580, 36, 40); // Webcambild mit Textbild verschmelzen
};
// Daten als JPG Bild an den Browser übergeben
$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");
header("Content-type: image/jpeg"); // nun sagen wir dem Browser, dass er eine JPG-Datei erhält
// Das Bild ausgeben
imagejpeg($dest);
?>