Auf Bilder im 'media' Ordner per Web zugreifen (V2)

Falls ihr das Bedürfniss habt, eure Bilder aus dem ‚media‘ Ordner auch im WebInterface zu nutzen, ohne sie doppelt rumliegen zu haben, könnt ihr dieses kleine Skript dazu benutzen.

Einfach in eurem ‚web‘ Ordner als z.B. image.php abspeichern.

Dann könnt ihr auf die Bilder so zugreifen:


<img src=image.php?imageid=12345>


<?

$path = "..";
$imageid = (int)$imageid;

if(!IPS_MediaExists($imageid))
    die("ID #".$imageid.") does not exists");

$media=IPS_GetMedia($imageid);
$imagepath=$path."/".$media['MediaFile'];

if($media['MediaType'] != 1)
    die("ID #".$imageid." is not an image");

if(!file_exists($imagepath))
    die("File does not exists");
    
header("Content-Type: ".returnMIMEType($imagepath));
readfile($imagepath);

function returnMIMEType($filename)
{
    preg_match("|\.([a-z0-9]{2,4})$|i", $filename, $fileSuffix);

    switch(strtolower($fileSuffix[1]))
    {
        case "jpg" :
        case "jpeg" :
        case "jpe" :
            return "image/jpg";

        case "png" :
        case "gif" :
        case "bmp" :
            return "image/".strtolower($fileSuffix[1]);
    }
}


?>

paresy

… und wer es einmal ausprobieren möchte - hier ein kleines Demo-Skript.

  1. „wenn man es benötigt“ eine Integer Variable anlegen, die dann einfach nur so hochzählt (hier ID: 14700)
  2. eine Boolean Variable anlegen, die den Status der Szene wiedergibt (hier ID: 48546)
  3. zwei Bilder aus dem Media-Poll aussuchen (hier ID: 37215 & 12704)
  4. Skript im web Ordner abspeichern
  5. im Browser IP-Adresse/name.php eingeben (siehe Bild)

Fertig - bei jedem Klick wechseln die beiden Bilder

MST

<?
if(isset($action)) {
// jeden Zufriff zählen
SetValue(14700, GetValue(14700) +1);
  
if($action=="szene_toggle"){
SetValue(48546, !GetValue(48546));
}
}
?>
<html>
<head>
<title>IP-Symcon Test</title>
</head>
<body>
Szene TV: <a href=?action=szene_toggle><img src=image.php?imageid=<?if(GetValue(48546) == True){
  echo "37215"; // Image: TV_On
}else{
  echo "12704";	// Image: TV_On
}
?>
></a>
<br>
Klicks: <? echo GetValue(14700); ?>
</body>
</html>

web_demo_toggle.png