Mayerhofer: GD Libary findet keine Bilder!

Hab mir ein codeschnipsel angesehen und würde es auch gerne verwenden, nur es funzt net so wie ich will.
Wenn ich unten bei $file das Bild fix eingebe zb.1.jpg
funzt es nur jetzt will ich alles .jpg bilder kleiner machen
und muss jetzt eigentlich nur mehr *.jpg angeben?
Aber da kommt dann nix.(Bild mit einen X drinnen).
Was muss ich jetzt machen, das alle bilder angewählt werden?

CODE:
____________________________________________________

<?php
   function createThumb($img_src, $img_width , $img_height, $des_src) {
      $im = imagecreatefromjpeg($img_src);
      list($src_width, $src_height) = getimagesize($img_src);
      if($src_width >= $src_height) {
         $new_image_width = $img_width;
         $new_image_height = $src_height * $img_width / $src_width;
      }
      if($src_width < $src_height) {
         $new_image_height = $img_width;
         $new_image_width = $src_width * $img_height / $src_height;
      }
      $new_image = imagecreatetruecolor($new_image_width, $new_image_height);
      imagecopyresampled($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
      imagejpeg($new_image, $des_src. "/" .$img_src, 100);
   }

$file    = "*.jpg";
   $groesse = "100";

createThumb($file, $groesse, $groesse, "thumbnails");

echo "<a href=".$file." target=_blank><img src=thumbnails/".$file." border=0></a>";

?>

  1. Hallo Mayerhofer

    und muss jetzt eigentlich nur mehr *.jpg angeben?

    Nein, Du musst mit einer Schleife durch alle Dateien mit der Endung .jpg laufen.

    Aber da kommt dann nix.(Bild mit einen X drinnen).

    Die meisten Dateisysteme lassen den Dateinamen *.jpg nicht zu,
    dieser Dateiname ist auf Deinem System sicherlich nicht vorhanden.

    Deinen Funktionsaufruf in eine Schleife packen:

    Für jede Datei mit der Endung .jpg
       Schreibe in die Variable $file den Dateinamen

    createThumb($file, $groesse, $groesse, "thumbnails");
       echo "<a href=".$file." target=_blank><img src=thumbnails/".$file." border=0></a>";

    nächste Datei

    PHP bietet diverse Schleifenkonstrukte http://www.php.net/manual/de/control-structures.php und auch diverse Funktionen, um nach Dateien zu suchen http://www.php.net/manual/de/ref.filesystem.php

    auf Linux müsste fnmatch bereits zurückliefern, was Du suchst [http://www.php.net/manual/de/function.fnmatch.php]

    Freundliche Grüsse,

    Vinzenz

    1. Hello wenn ich dich richtig verstehe, muss ich für jedes Foto in meinen ordner dann ein eigenes "FILE" schreiben?

      $file1    = "hubert.jpg";
      createThumb($file1, $groesse, $groesse, "thumbnails");
      echo "<a href=".$file1." target=_blank><img src=thumbnails/".$file1." border=0></a>";

      $file2    = "michi.jpg";
      createThumb($file1, $groesse, $groesse, "thumbnails");
      echo "<a href=".$file2." target=_blank><img src=thumbnails/".$file2." border=0></a>";

      $file3    = "maxi.jpg";
      createThumb($file3, $groesse, $groesse, "thumbnails");
      echo "<a href=".$file3." target=_blank><img src=thumbnails/".$file3." border=0></a>";

      Wenn ja dann müsste ich ca. 5.000 oder mehr(!) solche "FILES" schreiben?
      Da werde ich ja depatt! Gibts da nix anderes???

      MFG Mayerhofer

      1. Moin!

        Hello wenn ich dich richtig verstehe, muss ich für jedes Foto in meinen ordner dann ein eigenes "FILE" schreiben?

        So passiert es aktuell mit deinem Code.

        Wenn ja dann müsste ich ca. 5.000 oder mehr(!) solche "FILES" schreiben?
        Da werde ich ja depatt! Gibts da nix anderes???

        Du kannst das Verzeichnis, in dem sich die Bilder befinden, öffnen und nach passenden Dateiendungen durchgehen, um diese dann in einer Schleife in Thumbnails zu verwandeln.

        Bedenke, dass solche Operationen sehr ressourcenaufwendig sind. Sie kosten viel Speicherplatz (der kann außerdem begrenzt sein), und viel Rechenzeit. Deshalb sollte das Generieren von Thumbnails eine _einmalige_ Sache bleiben und das kleine, generierte Bild in jedem Fall abgespeichert werden, um es im Bedarfsfall schnell von Festplatte laden zu können.

        Das bedeutet für deine Schleife, dass sie prüfen muß, ob die Thumbnail-Version des großen Bildes schon existiert, und ob das große Bild älter ist, als das Thumbnail (wenn es neuer ist, wurde es nach der Generierung verändert und muß neu generiert werden). Dann kann auf das aufwendige Berechnen des Thumbnails verzichtet werden.

        - Sven Rautenberg

        1. Nochmal ich*g*

          Hm.. habe mir das am anfang leichter vorgestellt als es in der wirklichkeit ist!

          Bitte helft mir! Stehe auf der Leitun!
          ----------
          // Quelldatei Da wird das FOTO als GROßES geladen
          $from = "11.jpg";
          // Ziel Da wird dann das Foto als kleines gespeichert!
          $to1 = "thumbnails/11.jpg";
          ----------

          Jezt meine überlegung?
          ----------
          // Quelldatei Da wird das FOTO als GROßES geladen
          $from = "$bild.jpg";
          // Ziel Da wird dann das Foto als kleines gespeichert!
          $to1 = "thumbnails/$bild.jpg";
          ----------
          if ($bild ein .jpg then print *.jpg)
          ----------

          So in etwa! Aber genauer weiss ich es derzeit nicht! Stehe vollkommen auf der leitung!

          1. Trotz dem kenne ich mich nicht aus!
            Kann mir keiner von euch ein script schreiben?

            ++Bitte nicht schreiben"SELBER MACHEN",

            1. finde ich das kindisch
            2. für was gibts den ein forum?
              ++

            DANKE MAYERHOFER

            1. Moin!

              Trotz dem kenne ich mich nicht aus!
              Kann mir keiner von euch ein script schreiben?

              Ja klar. Für 50 Euro die Stunde kannst du mir einen Auftrag erteilen, und kannst fordern, was dein kleines Herz begehrt. Und dafür natürlich dann zahlen.

              ++Bitte nicht schreiben"SELBER MACHEN",

              Doch. Das Forum heißt _SELF_ HTML. Nicht _GET_ HTML.

              1. finde ich das kindisch

              Das ist mir egal.

              1. für was gibts den ein forum?

              Zum Fragen stellen, weil Probleme beim _selbermachen_ aufgetreten sind, die sich nicht mithilfe der gegebenen Dokumentationen (allen voran SELFHTML) lösen lassen.

              Wenn du erwartest, dass dir hier jemand den Hintern abwischt, bist du im falschen Forum.

              - Sven Rautenberg

      2. Hallo Mayerhofer

        Hello wenn ich dich richtig verstehe, muss ich für jedes Foto in meinen ordner dann ein eigenes "FILE" schreiben?

        Nein, Du hast mich nicht richtig verstanden :-(

        Wenn ja dann müsste ich ca. 5.000 oder mehr(!) solche "FILES" schreiben?
        Da werde ich ja depatt! Gibts da nix anderes???

        Für sowas gibt es in Programmiersprachen Schleifenkonstrukte, die Dir diese Arbeit abnehmen. In PHP findest Du die Schleifenkonstrukte im Abschnitt Kontrollstrukturen http://www.php.net/manual/de/control-structures.php des Handbuchs. Die if-Anweisung http://www.php.net/manual/de/control-structures.php wirst Du ganz bestimmt auch brauchen.

        Du solltest so vorgehen:
        [1] Ermittle eine Liste aller Dateien, die auszugeben sind.
        [2] Gebe alle Dateien der Lista aus.

        [1]
        Für eine solche Liste verwendest Du am besten ein Array http://www.php.net/manual/de/language.types.array.php
        Dazu kannst Du auf Linuxsystemen fnmatch http://www.php.net/manual/de/function.fnmatch.php verwenden, auf jeden Fall sollte es mit den Verzeichnisfunktionen http://www.php.net/manual/de/ref.dir.php machbar sein. Dazu liest Du die einzelnen Verzeichniseinträge ein und überprüfst sie, ob sie die gewünschte Endung tragen.
        Wenn ja, füge den Eintrag in Deine Liste ein.

        [2]
        Nachdem Du PHP diese Liste hast erstellen lassen, durchläufst Du Deine Liste mit einer Schleife. Für Arrays bietet sich foreach an http://www.php.net/manual/de/control-structures.foreach.php an. Innerhalb dieser Schleife rufst Du Deine Funktion auf, die Dir Dein Thumbnail liefert und ausgibt.

        Freundliche Grüsse,

        Vinzenz

        1. Nochmal ich*g*

          Hm.. habe mir das am anfang leichter vorgestellt als es in der wirklichkeit ist!

          Bitte helft mir! Stehe auf der Leitun!
          ----------
          // Quelldatei Da wird das FOTO als GROßES geladen
          $from = "11.jpg";
          // Ziel Da wird dann das Foto als kleines gespeichert!
          $to1 = "thumbnails/11.jpg";
          ----------

          Jezt meine überlegung?
          ----------
          // Quelldatei Da wird das FOTO als GROßES geladen
          $from = "$bild.jpg";
          // Ziel Da wird dann das Foto als kleines gespeichert!
          $to1 = "thumbnails/$bild.jpg";
          ----------
          if ($bild ein .jpg then print *.jpg)
          ----------

          So in etwa! Aber genauer weiss ich es derzeit nicht! Stehe vollkommen auf der leitung!

          1. Hallo Markus alias Mayerhofer ;-)

            Sven hat selbstverständlich völlig recht. Es reicht die Bilder einmal umzuwandeln.

            So in etwa sollte es gehen:

            Erstelle die Liste aller grossen Dateien mit der Endung .jpg
            Für jedes Bild in der Liste
                 Überprüfe, ob im Thumbnail-Verzeichnis bereits ein Thumbnail existiert
                 Wenn nein
                     Erstelle einen Thumbnail des Bildes
                     Speichere den Thumbnail im Thumbnail-Verzeichnis ab
                 Ende Wenn
            End Für
            Erstelle die Thumbnail-Ausgabe

            Vinzenz

            1. Moin!

              So in etwa sollte es gehen:

              Erstelle die Liste aller grossen Dateien mit der Endung .jpg

              Wobei diese Aufgabe zerfällt in:

              Öffne das Verzeichnis.
              Solange Dateinamen da sind
                Lies einen Dateinamen ein.
                Prüfe, ob die Endung "geeignet" ist (auf .jpg endet)
                Wenn ja, füge Dateinamen zur Liste hinzu.
              Ende von solange
              Schließe das Verzeichnis

              Für jedes Bild in der Liste
                   Überprüfe, ob im Thumbnail-Verzeichnis bereits ein Thumbnail existiert
                   Wenn nein
                       Erstelle einen Thumbnail des Bildes
                       Speichere den Thumbnail im Thumbnail-Verzeichnis ab
                   Ende Wenn
              End Für
              Erstelle die Thumbnail-Ausgabe

              Und der Rest muß selber gedacht werden. Die notwendigen Funktionen zum Öffnen eines Verzeichnisses etc. wurden alle schon genannt mit Link zu php.net. Da muß man nur mal hinsurfen und sich die Beispiele angucken! Und die dann kopieren und gucken, was passiert. Und dann etwas modifizieren, wieder gucken, und dabei lernen. Anders geht es nicht, wenn man nicht wegen jedem Furz hier wieder auf der Matte stehen will, um anwesende Helfer anzubetteln.

              - Sven Rautenberg