Antworten
Sep 30, 2016 - 11:58
Anlegen einer PHP Datei in IP-Symcon
Zunächst legen wir eine PHP Datei in IP-Symcon unter dem Ordner /webfront/user/neo an und nennen diese ipsimage.php
In die Datei ipsimage.php kopieren wir folgenden Inhalt:
<?php
$imageid = $_GET['imageid'];
$imageid = (int)$imageid;
if(!IPS_MediaExists($imageid))
die("ID #".$imageid.") does not exists");
$media=IPS_GetMedia($imageid);
if($media['MediaType'] != 1)
die("ID #".$imageid." is not an image");
$imgbase64 = IPS_GetMediaContent($imageid); //liefert den Base64 kodierten Inhalt für das Medienobjekt
$imgdata = base64_decode($imgbase64);
$mimetype = getImageMimeType($imgdata);
$headhtml = getimgheader($mimetype);
header($headhtml);
echo $imgdata;
function getBytesFromHexString($hexdata)
{
for($count = 0; $count < strlen($hexdata); $count+=2)
$bytes[] = chr(hexdec(substr($hexdata, $count, 2)));
return implode($bytes);
}
function getImageMimeType($imagedata)
{
$imagemimetypes = array(
"jpeg" => "FFD8",
"png" => "89504E470D0A1A0A",
"gif" => "474946",
"bmp" => "424D",
"tiff" => "4949",
"tiff" => "4D4D"
);
foreach ($imagemimetypes as $mime => $hexbytes)
{
$bytes = getBytesFromHexString($hexbytes);
if (substr($imagedata, 0, strlen($bytes)) == $bytes)
return $mime;
}
return NULL;
}
function getimgheader($mimetype)
{
if($mimetype == "jpeg")
{
$header = 'Content-Type: image/jpeg';
}
elseif($mimetype == "png")
{
$header = 'Content-Type: image/png';
}
elseif($mimetype == "gif")
{
$header = 'Content-Type: image/gif';
}
elseif($mimetype == "bmp")
{
$header = 'Content-Type: image/bmp';
}
elseif($mimetype == "tiff")
{
$header = 'Content-Type: image/tiff';
}
return $header;
}
?>
Jetzt speichern wir die Datei und können sie schließen.
Anzeigen von Grafiken in NEO
In NEO fügen wir an der Stelle an der eine Grafik aus dem Mediapool von IP-Symcon angezeigt werden soll ein Element vom Typ Webseite ein. Jetzt gehen wir auf Zuweisen und fügen dann mit einem + eine neue Webseite hinzu. Dieser geben wir nun einen aussagekräftigen Namen.
Als URL tragen wir ein:
http://[IP Adresse IP-Symcon]:3777/user/neo/ipsimage.php?imageid=[Objekt ID Mediaelement]
[IP Adresse IP-Symcon] ersetzten wir durch die IP Adresse von IP-Symcon
[Objekt ID Mediaelement] ersetzen wir durch die ObjektID des Media Elements aus IP-Symcon das wir anzeigen wollen
sieht dann also z.B. so aus
"http://192.168.10.10:3777/user/neo/ipsimage.php?imageid=12345"
Fertig, jetzt bekommen wir hier das Bild in NEO angezeigt. Die Adresse bleibt immer gleich wir müssen nur bei einem anderen Bild die ObjektID anpassen.
Feb 19, 2017 - 06:32
Wenn ich mit NEO die Bilder verkleinere, wird der Rest der Ansicht "Abgeschnitten".
Feb 19, 2017 - 15:05
IPSymcon Webbox
Dieses wird sukzessive erweitert und soll es Beginnern einfacher ermöglichen ohne eigene Skripte häufige Inhalte von IP-Symcon in NEO einfach darstellen zu können.
Links Einzelvariablen aus IP-Symcon, rechts Mitte eine HTML Box aus IP-Symcon, rechts unten ein Media Image aus IP-Symcon.
Grafiken sind als Media Image aus IP-Symcon über das Webbox Modul und das Webseitenelement in NEO eingebunden.
Von
Hallo Fonzo,
wie immer eine Top Arbeit!
Vielen Dank
Ich möchte nur anmerken, das Du oben beim Kopieren die erste Zeile nicht mit eingefügt hast.
Damit der Code funktioniert oben drüber den "Open-Tag" einfügen.
Also;
<?php
dem Code voranstellen.
Von
Das ist leider ein Darstellungsproblem dieser Forumsoftware. Im Quelltext steht ein <? davor warum dies nicht angezeigt wird weis ich nicht.
Von
Das <? scheint die Forensoftware zu schlucken <?php stellt sie wohl dar.
Neuen Kommentar hinzufügen