PHP zufälliges Bild aus Ordner anzeigen

Gast #6954489
Hallo zusammen,

ich benötige Hilfe einen Ansatz zu finden, wie ich folgendes umsetze:

Ich möchte auf der Startseite meiner Smart-Home-Umgebung, die ich 
mittels Apache/PHP/Python/Modbus aufgesetzt habe, als Startbildschirm 
ein Foto zeigen.

Bisher springt die Detailseite nach x Sekunden auf eine 
"start.php"-Seite.

Diese läd statisch ein Bild.
1
<a h#r#e#f="index_ha.php"><img src="start.JPG" alt="Bild"  style="width:1004px;height:748px"s/></a>

Dieses Bild möchte ich zufällig/beliebig aus einem Ordner wählen unter 
/var/www/html/backGroundPic

Die Dateinahmen der Bilder beginnen immer mit YYYY-MM-DD + musterlosem 
Dateiname.jpg

Hat jemand einen Ansatz, wie ich hier vorgehen kann?
Gast
Vielen Dank zusammen,das waren genau die Ansätze, die ich brauchte.

Hab es nun umgesetzt bekommen und es tut was es soll.
1
<link h#r#e#f="design.css" rel="stylesheet">
2
<meta http-equiv="refresh" content="25">
3
<?php
4
        $path = opendir('/var/www/html/pic/bilderrahmen/');
5
        $files = array_diff(scandir('/var/www/html/pic/bilderrahmen/'), ['.','..']);
6
        $i = rand(2,count($files));
7
        echo $files[$i];
8
        echo "<a hh#r#e#f='index_ha.php'><img src='./pic/bilderrahmen/$files[$i]' alt='Bild'  style='width:1004px;height:748px'/></a>";
9
?>



Das Neuladen habe ich mittels
<meta http-equiv="refresh" content="25">
gemacht.

Das ist ein sehr harter Übergang. Hat jemand eine Idee, das ganze 
weicher zu machen?
Gast
Eventuell wäre array_rand() noch interessant.
Übrigens, es sollte möglich sein, nur das Bild neu zu laden, mit dem 
refresh http header (beim der response vom Bild). Eine andere 
Möglichkeiten wären eine iframe. Oder per JS.
Gast
Achim schrieb:
> Das ist ein sehr harter Übergang.

kein Wunder, da wird ja auch einfach die ganze Seite neu geladen

Achim schrieb:
> Hat jemand eine Idee, das ganze
> weicher zu machen?

da gibts (meiner Mmeinung) nur eine (halbwegs gscheide) Lösung: 2 img 
Tags, die Bildquelle ist ein php script das ein zufälliges Bild 
ausliefert, ein bisschen javascript und css.
Gast
Ben B. schrieb:
> ... Und so schnell wird aus "zufälliges Bild aus Ordner anzeigen"
> ein komplettes Ajax-Galerie-Script.

naja, so schlimm muss es nicht werden. Es würde ja genügen, wenn beim 
laden der Seite mittels PHP ein Javascript-Array mit den Dateinamen 
befüllt wird. Dann kann ein JS-Script das Array mischen und nach 
vorgegebener Zeit den Inhalt eines Elementes austauschen - indem es das 
nächste Bild aus dem Array lädt. Mal ganz grob skizziert.
Mach doch ein PHP das dir direkt das Bild streamt und link dieses dann. 
PHP sollte header für JPEG sowie expire cache ausgeben
1
$name = $files[$i];
2
$fp = fopen($name, 'rb');
3
// send the right headers
4
header("Content-Type: image/jpeg");
5
header("Content-Length: " . filesize($name));
6

7
header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' );
8
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s',time()+60*60*8 ) . ' GMT' );
9
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
10
header( 'Cache-Control: post-check=0, pre-check=0', false );
11
header( 'Pragma: no-cache' );
12

13

14
// dump the picture and stop the script
15
fpassthru($fp);
16
exit;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.