Fehler beim Erstellen einer Foto-Galerie

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler beim Erstellen einer Foto-Galerie

    Hallo!
    Ich habe letztens versucht mit einem PHP-Skript, was ich im Internet gefunden habe, eine Galerie zu erstellen. Der Inhalt eines Ordners soll ausgelesen werden und von den Dateien ein Thumbnail erstellt werden. Das Skript dazu sieht so aus:
    PHP-Code:
    <?php
    include("check_thumb.php");     

    $files = array();

    $path "groki2005";

    $verzeichnis = @opendir($path);     
    if(!
    $verzeichnis) die("Kann Verzeichnis $path nicht öffnen");

    rewinddir($verzeichnis);                    
    while(
    $file readdir($verzeichnis)) {     
         if(
    $file != "." and $file != "..") {
              
    array_push($files"$file");     
         }
    }
    sort($files);               

    foreach(
    $files as $file) {
         if(
    check_thumb("$path/$file""$path/thumbs/$file.klein.jpg")) {      
              echo 
    "Thumbfile für $file neu gemacht<br />\n";                   
         }
         else echo 
    "Thumbfile für $file gabs schon<br />\n";                 
    }
    ?>
    Die Funktion check_thumb ist wie folgt definiert:
    PHP-Code:
    <?php

    function check_thumb($imagefile$thumbfile) {

         if(
    file_exists($thumbfile)) {     /* wenn die Thumbfile jetzt schon besteht, */
              
    return false;                    /* ist nix mehr zu machen */
         
    }                              
                                       
    /* Sonst gehts weiter wir gehabt */
         
         
    $Img imageCreateFromJPEG($imagefile);
         
         
    $oBreite imageSX($Img);
         
    $oHöhe imageSY($Img);
         
    $nBreite 120;
         
    $nHöhe $oHöhe 5;
         
         
    $Out imageCreateTrueColor($nBreite$nHöhe);
         
    imageCopyResampled($Out$Img0000$nBreite$nHöhe$oBreite$oHöhe);
         
    imageJPEG($Out$thumbfile);
         return 
    true;     
    }
    ?>
    Das Problem ist jetzt, dass eine Fülle von Fehlern auftreten. Hier sind sie:
    Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /home/www/web755/html/check_thumb.php on line 10

    Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'groki2005/thumbs' is not a valid JPEG file in /home/www/web755/html/check_thumb.php on line 10

    Warning: imagesx(): supplied argument is not a valid Image resource in /home/www/web755/html/check_thumb.php on line 12

    Warning: imagesy(): supplied argument is not a valid Image resource in /home/www/web755/html/check_thumb.php on line 13

    Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/www/web755/html/check_thumb.php on line 17

    Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/www/web755/html/check_thumb.php on line 18

    Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/www/web755/html/check_thumb.php on line 19
    Thumbfile für thumbs neu gemacht
    Das komische ist ja, dass überhaupt keine Fehler auftreten, wenn ich in diesem Teil: "$path/thumbs/$file.klein.jpg" den Ordner thumbs weglasse. Dann funktioniert alles. Ich wollte aber gerne, dass Original und verkleinerte Kopie in verschiedenen Ordnern liegen.
    Alle Ordner, die das Skript benutzt, sind im 777-Modus. Also ich weiß nicht, wo der Fehler liegen könnte.

  • #2
    'groki2005/thumbs' is not a valid JPEG file
    Ist doch ne ziemlich eindeutige Mitteilung, oder?

    hastes error_reporting drin? nee, oder?

    Kommentar


    • #3
      Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'groki2005/thumbs' is not a valid JPEG file in /home/www/web755/html/check_thumb.php on line 10
      Normalerweise haben Dateien eine Endung. Und die Fehlermeldung sagt nix von einer Endung...
      Die restlichen Fehler dürften daraus resultieren, dass keine image Ressource erstellt werden konnte, weil diese keinen gültigen Dateinamen hat.

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        OffTopic:
        laaaaahm. :P

        Kommentar


        • #5
          laaaaahm. :P
          OffTopic:

          Wir Schweizer brauchen immer etwas länger

          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            OffTopic:
            ja, das ist bekannt.

            Kommentar


            • #7
              Hab gerade einfach mal nur folgendes ausprobiert:
              PHP-Code:
              $path "groki2005";

              $verzeichnis = @opendir($path);     
              if(!
              $verzeichnis) die("Kann Verzeichnis $path nicht öffnen");

              rewinddir($verzeichnis);                    
              while(
              $file readdir($verzeichnis)) {     
                   if(
              $file != "." and $file != "..") {
                        
              array_push($files"$file");     
                   }
              }
              sort($files);               

              foreach(
              $files as $file) {
                   echo 
              "$file";

              Es wird ausgegeben: "groki.jpgthumbs". Jetzt ist natürlich klar, dass der davon keinen Thumbnail machen kann. Das Problem ist, dass der, wenn er den Ordner ausliest, den Unterordner "thumbs" immer an die Datei mitanhängt und somit keine der Dateien ein jpg-Datei ist. Gibt es eine Möglichkeit, dass beim Auslesen eines Ordners Unterordner vernachlässigt werden oder muss ich jetzt den thumbs Ordner komplett aus dem groki2005 Ordner auslagern, sodass sich dort nur noch Dateien befinden?

              Kommentar


              • #8
                Kennst du glob() ? Ist perfekt für diese Zwecke...

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Ich habe nur sehr wenig Erfahrungen mit PHP. Deswegen kannst du mir vielleicht einfach sagen, wo ich dieses glob() einsetzen soll.

                  Kommentar


                  • #10
                    Hättest ja einfach im Manual nachlesen können Habe aber heute meinen guten Tag (ist ja Freitag und schon bald fertig mit der Arbeit )
                    PHP-Code:
                    $path "groki2005";
                    $files glob($path.'/*.jpg');
                    echo 
                    '<pre>';
                    print_r($files);
                    echo 
                    '</pre>'
                    Ist das in etwa das was du brauchst ?

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      PHP-Code:
                      $path='groki2005/';
                      $thumbs_path=$path.'thumbs/';

                      if(!
                      is_dir($path)||!is_readable($path))
                       die(
                      'Kann Bilderordner nicht öffnen');

                      if(!
                      is_dir($thumbs_path)||!is_readable($thumbs_path))
                       die(
                      'Kann Thumbnailordner nicht öffnen');

                      $pictures=glob($path.'*.jpg');
                      if(!
                      is_array($pictures))
                       die(
                      'Keine Biler gefunden');

                      foreach(
                      $pictures as $picture)
                       {
                        
                      // Testausgaben
                        // todo: Hier kommt jetzt "Deine" check_thumb($imagefile, $thumbfile) hin
                        
                      echo 'Picture: '.$picture.'<br />';
                        echo 
                      'Thubnail: '.$thumbs_path.basename($picture).'<br />';
                       } 

                      Kommentar


                      • #12
                        Danke schon Mal für eure Hilfe. Jetzt stehe ich allerdings vor einem weiteren Problem. Ich habe dieses Skript ausgeführt:
                        PHP-Code:
                        $path "groki2005/";
                        $files=glob($path.'*.jpg');
                        if(!
                        is_array($files))
                         die(
                        'Keine Biler gefunden');

                        foreach(
                        $files as $file)
                         {     
                             echo 
                        "$file";

                        Das Ergebnis lautet: "groki2005/groki.jpg". Jetzt ist wieder der Verzeichnisname im Dateinamen. Wenn ich aber Thumbnails erstellen will, soll ja an diesen Dateinamen nur die Endung ".klein.jpg" hinzu kommen. Das würde aber nicht funktionieren, wenn Schrägstriche in dem Dateinamen sind.
                        Also geht das irgendwie, dass der Ordner nicht im Dateinamen aufgeführt wird?

                        Kommentar


                        • #13
                          Original geschrieben von darton Das Ergebnis lautet: "groki2005/groki.jpg". Jetzt ist wieder der Verzeichnisname im Dateinamen. Wenn ich aber Thumbnails erstellen will, soll ja an diesen Dateinamen nur die Endung ".klein.jpg" hinzu kommen.
                          du benötigst doch die pfadangabe zum öffnen bzw. schreiben des bildes.

                          mit basename($file, '.jpg').'.klein.jpg'; bekommst du den thumbnail bildnamen und wenn du davor noch den thumbnail-pfad schreibst, passt doch alles.
                          $thumbs_path.basename($file, '.jpg').'.klein.jpg';

                          Kommentar


                          • #14
                            Super, jetzt hats funktioniert.
                            Jetzt habe ich aber noch eine letzte Frage. Kann PHP selber Ordner erstellen? Dann müsste man nämlich nicht immer den thumbs-Ordner selber erstellen. Obwohl, dann müsste PHP auch gleich den chmod auf 777 stellen. Geht das wohl?

                            Kommentar


                            • #15
                              Jetzt habe ich aber noch eine letzte Frage. Kann PHP selber Ordner erstellen? Dann müsste man nämlich nicht immer den thumbs-Ordner selber erstellen. Obwohl, dann müsste PHP auch gleich den chmod auf 777 stellen. Geht das wohl?
                              Ja


                              Und bevor hier jemand ausführlicher auf eine solch trivale Frage antwortet, machst du dich mal selbst auf die Suche.

                              Kommentar

                              Lädt...
                              X