Hallo und guten Nachmittag,
(hier herrscht Dschungelklima)
mit etwas CSS habe ich es fast hinbekommen
img { border: 2px solid #000; background-color: #fff; padding: 0px; height: 160px; min-width: 116px; margin-bottom: 1em; margin-right: 3px; }
jetzt bleibt noch die Frage, wie kann ich erreichen, dass ich mit PHP Bilder sortiert bekomme, denn in der dritten Reihe hätte noch ein hochkannt Bild platz. Ich weiß nicht, warm hier ein Platz leer bleibt, der Zeile 2 wird auch alles ausgefüllt
$bv = "bilder"; $verzeichnis = opendir($bv); $bilder = array(); while(($datei = readdir($verzeichnis)) !== false) { if (preg_match("/\.JPE?G$/", $datei)) { $bilder[] = $datei; } } closedir($verzeichnis); foreach($bilder as $bild) { echo "<a href='bilder/$bild' class='fancybox-button' rel='fancybox-button'><img src='vorschaubilder/$bild' alt='Vorschaubild' /></a>\n"; }
Nur als Beisiel:
Kennst Du auch schon die PHP-Funktionen glob() (als Alternative für readdir() ) und getimagesize()?
Wenn deine Bildergalerie nun keine Semantische Ordnung einhalten muss, sondern die Bilder nur nach Größe aufgereiht werden sollen, also dass die Zeilen immer voll werden, dann kannst Du sie doch vorher "sortieren" und für die Ausgabe wieder mischen. Ich habe das nun so verstanden, dass Du das auch willst?
- Hole Dir alle Bilder z.B. mit glob() in ein Array (A).
- gehe das Array Element für Element durch, kontrolliere mit getimagesize() nochmal, ob das Element ein Bild ist, stelle das Format fest,
- sortiere die hochformatigen in Array (B)
- sortiere die querformatigen in Array (C)
- erzeuge für die Ausgabe in einer Schleife mehrfach das Array (D), in dem immer die Zeile gefüllt ist. Die beiden Quell-Arrays (B) und (C) werden dabei immer um das jeweils entnommene Bild verkürzt.
Nun gilt es, einen Algoritmus zu finden, der so viele der bereitstehenden Bilder berücksichtigt und immer volle Zeilen ausgibt. Du musst also vorher zählen wieviele hoch- und wieviele quwerformatige Bilder vorhanden sind. Der Rest ist Mathematik.
Da kannst Du dann auch Muster bauen, wie beim Mauern :-)
Grüße
TS