Thomas Schmieder: Galerie - Sortieren von Bildern innerhalb eines Ordners

Beitrag lesen

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

--
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.