Galerie - Sortieren von Bildern innerhalb eines Ordners
britta
- php
hallo!
ich versuche, mir ein kleines skript zu schreiben, das die in einem verzeichnis liegenden bilder im browser ausliest. ich finde keinen passenden befehl, die bilder, die nach dem enstehungsdatum benannnt sind (also 010202.jpg) in der reihenfolge ausgeben zu lassen, dass das neuste oben erscheint und das erste ganz unten.
fällt euch etwas ein?
grüße
britta
Hi!
ich versuche, mir ein kleines skript zu schreiben, das die in einem verzeichnis liegenden bilder im browser ausliest. ich finde keinen passenden befehl, die bilder, die nach dem enstehungsdatum benannnt sind (also 010202.jpg) in der reihenfolge ausgeben zu lassen, dass das neuste oben erscheint und das erste ganz unten.
Klar, EINEN Befehl gibt es da sicher nicht - da musst du schon selbst was schreiben!
Wenn deine Dateien wirklich ganz streng nach diesem Format benannt sind, kannst du allerdings jeden Dateinamen einlesen lassen und in ein Array schreiben.
Dann behältst du das erste und machst eine Datenbank aus einem Array, von dem jedes Element noch mal ein Array ist. (du kannst aber auch einfach mit Schlüsseln und Werten arbeiten).
Als zweites Element der inneren Arrays rechnest du immer die Time-Werte der Daten aus, und diese time-Werte kann man dann sortieren.
Zur Veranschaulichung:
Hauptarray( Array("010102.jpg","<time-wert hiervon") , Array("020102.jpg","<time-wert davon") )
Das ganze ist aber sehr kompliziert, da fragt man sich lieber nach dem Sinn des ganzen.
Viel Glück!
Marc Reichelt || http://www.marcreichelt.de/
Hallo,
Voraussetzung:
alle Bilder im Verzeichnis habe die passende Endung .jpg
alle Bilder im Verzeichnis sind nach Datum in Ansi-Notation benannt, also z.B. JJMMTTxx.jpg
JJ = Jahr
MM = Monat
TT = Tag
xx = laufende Nummer am Tag
Dann liest Du das Verzeichnis einfach aus:
//----------------------------------------------------
function get_dirlist("DirPathAndName")
{
$dh=opendir("DirPathAndName");
if ($dh)
{
$dirlist=array();
while ($filename=readdir($dh))
{
if (is_file($filename) and substr(filename,-4)==".jpg") // upper?
{
array_push($dirlist,$filename);
}
}
asort($dirlist); // oder arsort() für rückwärts
}
else
{
// ggf. globale Fehlermeldung setzen
return false;
}
closedir($dh);
return $dirlist;
}
Na, und dann kannst Du daraus die Links auf die Bilder generieren oder vorher noch Thumbnails bauen:
function makethumb($picname,$thumbname,$thumbwidth)
{
### hier müssen noch die anderen unterstützten Formate
### eingebaut werden.
$imgdata=getimagesize($picname); //fragen, ob es jpg ist
if ($imgdata[2]==2)
{
$src_img=ImageCreatefromjpeg($picname);//Quellbild i Speicher auspacken
$qx=imagesx($src_img); //Maße des Quellbides bestimmen
$qy=imagesy($src_img);
$tx=$thumbwidth; //Breite des Zielbildes festlegen
$ty=($thumbwidth/$qx)*$qy; //Höhe des Zielbildes berechnen
#$dst_img=imagecreate($tx,$ty); //Zielbild im Speicher vorbereiten
$dst_img=imagecreateTrueColor($tx,$ty); //neue Funktion benutzen ab 4.2.x
//Zielbild erzeugen
imagecopyresized($dst_img,$src_img,0,0,0,0,$tx,$ty,$qx,$qy);
imagejpeg($dst_img,$thumbname); //Zielbild speichern
imagedestroy($src_img); //Arbeitsspeicher für Arbeits-
imagedestroy($dst_img); //kopien der Bilder freigeben.
}
else
{
$errormsg = "kein JPEG-Format: $imgdata[2]<br>";
}
return $errormsg;
}
makethumb("grossesBild.jpg","thumbnail.jpg",100);
Mit den beiden Funktionen solltest Du nun zum Ziel kommen. Du benötigst dafür eine PHP-Version > 4.2.x wegen imgcreateTruColor() .
Liebe Grüße aus http://www.braunschweig.de
Tom