#1 5. Januar 2015 Hallo RRler, sicherlich hat der eine oder andere von euch schonmal mit IP-Kameras gearbeitet. Netterweise bieten die meisten ja eine Bewegungserkennung mit anschließendem FTP Upload an. Dummerweise sortieren ABUS Kameras die Fotos in zig Unterordnern weg... z.B.: /KAMERANAME/Bewegungserkennung/2015-01-03/12-22-59/pre-trigger/20150103122259.jpeg Praktisch wäre da eine Simple PHP Gallerie, die alle unterverzeichnisse durchsucht und die Bilder auf einer Seite darstellt. Kennt da jemand was fertiges? Habe z.B. diese Gallerie gefunden: PHP: <ul id="galerie"> <?php // Ordnername $ordner = "images" ; //auch komplette Pfade möglich ($ordner = "download/files";) // Ordner auslesen und Array in Variable speichern $allebilder = scandir ( $ordner ); // Sortierung A-Z// Sortierung Z-A mit scandir($ordner, 1) // Schleife um Array "$alledateien" aus scandir Funktion auszugeben// Einzeldateien werden dabei in der Variabel $datei abgelegt foreach ( $allebilder as $bild ) { // Zusammentragen der Dateiinfo $bildinfo = pathinfo ( $ordner . "/" . $bild ); //Folgende Variablen stehen nach pathinfo zur Verfügung // $dateiinfo['filename'] =Dateiname ohne Dateiendung *erst mit PHP 5.2 // $dateiinfo['dirname'] = Verzeichnisname // $dateiinfo['extension'] = Dateityp -/endung // $dateiinfo['basename'] = voller Dateiname mit Dateiendung // Größe ermitteln für Ausgabe $size = ceil ( filesize ( $ordner . "/" . $bild )/ 1024 ); //1024 = kb | 1048576 = MB | 1073741824 = GB // scandir liest alle Dateien im Ordner aus, zusätzlich noch "." , ".." als Ordner // Nur echte Dateien anzeigen lassen und keine "Punkt" Ordner // _notes ist eine Ergänzung für Dreamweaver Nutzer, denn DW legt zur besseren Synchronisation diese Datei in den Orndern ab // Thumbs.db ist eine Ergänzung unsichtbare Dateiergänzung die von ACDSee kommt // um weitere ungewollte Dateien von der Anzeige auszuschließen kann man die if Funktion einfach entsprechend erweitern if ( $bild != "." && $bild != ".." && $bild != "_notes" && $bildinfo [ 'basename' ] != "Thumbs.db" ) { ?> <li> <a href="<?php echo $bildinfo [ 'dirname' ]. "/" . $bildinfo [ 'basename' ]; ?>"> <img src="<?php echo $bildinfo [ 'dirname' ]. "/" . $bildinfo [ 'basename' ]; ?>" width="140" alt="Vorschau" /></a> <span><?php echo $bildinfo [ 'filename' ]; ?> (<?php echo $size ; ?>kb)</span> </li> <?php }; }; ?> </ul> Bezieht aber keine Unterordner ein... + Multi-Zitat Zitieren
#2 5. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Du musst Recursive vorgehen: Listing all the folders subfolders and files in a directory using php PHP: $allebilder = listFolderFiles ( $ordner ); Es macht sinn die Dateien nach JPG zu filtern. + Multi-Zitat Zitieren
#3 6. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Danke erstmal. Klappt leider noch nicht. Habe das mal so zurechtgefummelt: PHP: <ul id="galerie"> <?php // Ordnername $ordner = „ / Bewegungserkennung“ ; //auch komplette Pfade möglich ($ordner = "download/files";) // Ordner auslesen und Array in Variable speichern $allebilder = listFolderFiles ( $ordner ); // Sortierung A-Z // Sortierung Z-A mit scandir($ordner, 1) // Schleife um Array "$alledateien" aus scandir Funktion auszugeben // Einzeldateien werden dabei in der Variabel $datei abgelegt foreach ( $allebilder as $bild ) { // Zusammentragen der Dateiinfo $bildinfo = pathinfo ( $ordner . "/" . $bild ); //Folgende Variablen stehen nach pathinfo zur Verfügung // $dateiinfo['filename'] =Dateiname ohne Dateiendung *erst mit PHP 5.2 // $dateiinfo['dirname'] = Verzeichnisname // $dateiinfo['extension'] = Dateityp -/endung // $dateiinfo['basename'] = voller Dateiname mit Dateiendung // Größe ermitteln für Ausgabe $size = ceil ( filesize ( $ordner . "/" . $bild )/ 1024 ); //1024 = kb | 1048576 = MB | 1073741824 = GB // scandir liest alle Dateien im Ordner aus, zusätzlich noch "." , ".." als Ordner // Nur echte Dateien anzeigen lassen und keine "Punkt" Ordner // _notes ist eine Ergänzung für Dreamweaver Nutzer, denn DW legt zur besseren Synchronisation diese Datei in den Orndern ab // Thumbs.db ist eine Ergänzung unsichtbare Dateiergänzung die von ACDSee kommt // um weitere ungewollte Dateien von der Anzeige auszuschließen kann man die if Funktion einfach entsprechend erweitern if ( $bild != "." && $bild != ".." && $bild != "_notes" && $bildinfo [ 'basename' ] != "Thumbs.db" ) { ?> <?php function listFolderFiles ( $ordner ){ $ffs = scandir ( $ordner ); echo '<ol>' ; foreach( $ffs as $ff ){ if( $ff != '.' && $ff != '..' ){ echo '<li>' . $ff ; if( is_dir ( $ordner . ’ / ‚ . $ff )) listFolderFiles ( $ordner . ‘ / ‚ . $ff ); echo '</li>' ; } } echo '</ol>' ; } ?> <li> <a href="<?php echo $bildinfo [ 'dirname' ]. "/" . $bildinfo [ 'basename' ]; ?>"> <img src="<?php echo $bildinfo [ 'dirname' ]. "/" . $bildinfo [ 'basename' ]; ?>" width="140" alt="Vorschau" /></a> <span><?php echo $bildinfo [ 'filename' ]; ?> (<?php echo $size ; ?>kb)</span> </li> <?php }; }; ?> </ul> Anscheinend mag er die Funktion nicht aufrufen. Als Fehlermeldung bekomme ich: Code: Warning: Division by zero in /users/xxxx/www/TVIP62000/bilder.php on line 6 Fatal error: Call to undefined function listFolderFiles() in /users/xxxx/www/TVIP62000/bilder.php on line 9 Kann da bitte mal jemand drübergucken? + Multi-Zitat Zitieren
#4 6. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Bring erstmal Ordnung in deinen Code, seit wann rufen wir Funktionen auf bevor wir sie definiert haben? + Multi-Zitat Zitieren
#5 6. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Du musst entschuldigen, habe schon ewigkeiten nicht mehr mit PHP rumgebastelt. Habe die Funktion jetzt nach der Definition des Bilderordners gepackt. PHP: <ul id="galerie"> <?php // Ordnername $ordner = "Bewegungserkennung" ; //auch komplette Pfade möglich ($ordner = "download/files";) // Ordner auslesen und Array in Variable speichern $allebilder = listFolderFiles ( $ordner ); // Sortierung A-Z function listFolderFiles ( $ordner ){ $ffs = scandir ( $ordner ); echo '<ol>' ; foreach( $ffs as $ff ){ if( $ff != '.' && $ff != '..' ){ echo '<li>' . $ff ; if( is_dir ( $ordner . ’ / ‚ . $ff )) listFolderFiles ( $ordner . ‘ / ‚ . $ff ); echo '</li>' ; } } echo '</ol>' ; } // Sortierung Z-A mit scandir($ordner, 1) // Schleife um Array "$alledateien" aus scandir Funktion auszugeben// Einzeldateien werden dabei in der Variabel $datei abgelegt foreach ( $allebilder as $bild ) { // Zusammentragen der Dateiinfo $bildinfo = pathinfo ( $ordner . "/" . $bild ); //Folgende Variablen stehen nach pathinfo zur Verfügung // $dateiinfo['filename'] =Dateiname ohne Dateiendung *erst mit PHP 5.2 // $dateiinfo['dirname'] = Verzeichnisname // $dateiinfo['extension'] = Dateityp -/endung // $dateiinfo['basename'] = voller Dateiname mit Dateiendung // Größe ermitteln für Ausgabe $size = ceil ( filesize ( $ordner . "/" . $bild )/ 1024 ); //1024 = kb | 1048576 = MB | 1073741824 = GB // scandir liest alle Dateien im Ordner aus, zusätzlich noch "." , ".." als Ordner // Nur echte Dateien anzeigen lassen und keine "Punkt" Ordner // _notes ist eine Ergänzung für Dreamweaver Nutzer, denn DW legt zur besseren Synchronisation diese Datei in den Orndern ab // Thumbs.db ist eine Ergänzung unsichtbare Dateiergänzung die von ACDSee kommt // um weitere ungewollte Dateien von der Anzeige auszuschließen kann man die if Funktion einfach entsprechend erweitern if ( $bild != "." && $bild != ".." && $bild != "_notes" && $bildinfo [ 'basename' ] != "Thumbs.db" ) { ?> <li> <a href="<?php echo $bildinfo [ 'dirname' ]. "/" . $bildinfo [ 'basename' ]; ?>"> <img src="<?php echo $bildinfo [ 'dirname' ]. "/" . $bildinfo [ 'basename' ]; ?>" width="140" alt="Vorschau" /></a> <span><?php echo $bildinfo [ 'filename' ]; ?> (<?php echo $size ; ?>kb)</span> </li> <?php }; }; ?> </ul> Wird leider nicht besser: Code: 01-01-2015 Warning: Division by zero in /users/xxxxx/www/TVIP62500/bilder.php on line 16 02-01-2015 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 03-01-2015 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 04-01-2015 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 05-01-2015 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 06-01-2015 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 10547829_686047881493737_4962992595259745799_o.jpg Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 29-12-2014 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 30-12-2014 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 31-12-2014 Warning: Division by zero in /users/xxxxx/www/TVIP62000/bilder.php on line 16 Warning: Invalid argument supplied for foreach() in /users/xxxxx/www/TVIP62000/bilder.php on line 29 + Multi-Zitat Zitieren
#6 6. Januar 2015 Zuletzt bearbeitet: 6. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Hab völlig übersehen das die Funktion aus dem Link gar nichts zurück gibt. Hiermit sollte es besser Funktionieren: PHP: function deepFolderFiles ( $dir ) { $ffs = scandir ( $dir ); $list = array(); foreach( $ffs as $ff ) { if( $ff != '.' && $ff != '..' ){ if ( is_dir ( $dir . '/' . $ff )) { $list = array_merge ( $list , deepFolderFiles ( $dir . '/' . $ff )); } else { $list [] = $dir . '/' . $ff ; } } } return $list ;} -------------------------------- Hier eine komplett-Lösung: PHP: <? php function rsearch ( $folder , $pattern ) { $dir = new RecursiveDirectoryIterator ( $folder ); $ite = new RecursiveIteratorIterator ( $dir ); $files = new RegexIterator ( $ite , $pattern , RegexIterator :: GET_MATCH ); $fileList = array(); foreach( $files as $file ) { $fileList = array_merge ( $fileList , $file ); } return $fileList ;} // @source http://jeffreysambells.com/2012/10/25/human-readable-filesize-php function human_filesize ( $bytes , $decimals = 2 ) { $size = array( 'B' , 'kB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ); $factor = floor (( strlen ( $bytes ) - 1 ) / 3 ); return sprintf ( "%. { $decimals } f" , $bytes / pow ( 1024 , $factor )) . @ $size [ $factor ];} $folder = 'Bewegungserkennung' ; $files = rsearch ( $folder , '/^.*\.(?:jpg|jpeg|png|gif)$/i' ); ?><!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Galerie</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.2/normalize.min.css"> <style> *, *:before, *:after { box-sizing: border-box; } .galerie { display: block; max-width: 900px; margin: 100px auto 0; } .galerie-item { display: inline-block; width: 140px; } .galerie-item__filesize { display: block; font-size: 0.7em; } </style></head><body> <div class="galerie"> <?php if ( count ( $files ) > 0 ) : foreach ( $files as $file ) : ?> <div class="galerie-item"> <a href="<?php echo $file ; ?>"> <!-- Warning! Even with width=140 the full image is loading! Use thumbnail files here and link to original. --> <img class="galerie-item__thumbnail" src="<?php echo $file ; ?>" alt="Movement captured" width="140"> </a> <span class="galerie-item__info"><?php echo basename ( $file ); ?> <span class="galerie-item__filesize">(<?php echo human_filesize ( filesize ( $file )); ?>)</span></span> </div> <?php endforeach;else: ?> <h2>Nothing found.</h2> <?php endif; ?> </div> </body></html> + Multi-Zitat Zitieren
#7 6. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Hallo Nanobyte! Klasse - das funktioniert! Ich lese gerade das Code: Warning! Even with width=140 the full image is loading! Use thumbnail files here and link to original. Gibt es da eine simple möglichkeit, um Thumbnails zu generieren? Die Originalfotos haben zwar nur 0,2-0,3mb aber im laufe des Monats werden das schnell ein paar hundert. + Multi-Zitat Zitieren
#8 8. Januar 2015 AW: PHP Bildergallerie Unterordner einbeziehen Seit immer? PHP erlaubt das Article - How to create thumbnails with PHP and gd. + Multi-Zitat Zitieren