Und wieder ein Bilder-Thread

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

  • Und wieder ein Bilder-Thread

    Hallo zusammen,

    ich habe ein Problem mit meinem Bilderscript.
    Der Upload eines Bildes funktioniert und das Bild wird auch korrekt abgelegt. Allerdings erstellt er mir einfach kein Thumb davon.
    Leider sehe ich den Wald vor lauter Bäumen nicht mehr, vielleicht jemand von euch?

    PHP-Code:
    if (is_uploaded_file($_FILES["product_imageurl"]["tmp_name"]))
                    {
                            if (
    strrpos($_FILES["product_imageurl"]["type"],"image/") === false)
                            {
                                    
    $inform "Warnung: Falsche Bilddatei! Daten wurden aktualsiert, jedoch nicht der Link!";
                            }else
                            {
                                    
    $newpath "upload/image/".time(). substr($_FILES["product_imageurl"]["name"],strrpos($_FILES["product_imageurl"]["name"],"."));

                                    echo 
    $newpath;  //Ausgabe  /upload/image/1291908266.jpg   <-- funktioniert
                                    

                                     
    $imgfile $newpath;


                                        
    // Erstellt ein thumbnail eines Bildes
                                        // Ordner unter $speicherordner benötigt ggf. Schreibrechte CHMOD(777)

                                        // Parameter:
                                        // $imgfile: Pfad zur Bilddatei
                                        // $speicherordner: Ordner indem die Thumbnails gespeichert werden sollen
                                        // $filenameOnly: Soll nur der Dateiname als Name für Thumbnail verwendet werden,
                                        // ansonsten inkl. Pfad
                                        
    function thumbnail($imgfile$speicherordner="upload/image/thumb/"$filenameOnly=true)
                                           {
                                           
    //Max. Größe des Thumbnail (Höhe und Breite)
                                           
    $thumbsize 100;

                                           
    //Dateiname erzeugen
                                           
    $filename basename($imgfile);

                                           
    //Fügt den Pfad zur Datei dem Dateinamen hinzu
                                           //Aus ordner/bilder/bild1.jpg wird dann ordner_bilder_bild1.jpg
                                           
    if(!$filenameOnly)
                                              {
                                              
    $replace = array("/","\\",".");
                                              
    $filename str_replace($replace,"_",dirname($imgfile))."_".$filename;
                                              }

                                           
    //Schreibarbeit sparen
                                           
    $ordner $speicherordner;

                                           
    //Speicherordner vorhanden
                                           
    if(!is_dir($ordner))
                                              return 
    false;

                                           
    //Wenn Datei schon vorhanden, kein Thumbnail erstellen
                                           
    if(file_exists($ordner.$filename))
                                              return 
    $ordner.$filename;

                                           
    //Ausgangsdatei vorhanden? Wenn nicht, false zurückgeben
                                           
    if(!file_exists($imgfile))
                                              return 
    false;



                                           
    //Infos über das Bild
                                           
    $endung strrchr($imgfile,".");

                                           list(
    $width$height) = getimagesize($imgfile);
                                           
    $imgratio=$width/$height;

                                           
    //Ist das Bild höher als breit?
                                           
    if($imgratio>1)
                                              {
                                              
    $newwidth $thumbsize;
                                              
    $newheight $thumbsize/$imgratio;
                                              }
                                           else
                                              {
                                              
    $newheight $thumbsize;
                                              
    $newwidth $thumbsize*$imgratio;
                                              }

                                           
    //Bild erstellen
                                           //Achtung: imagecreatetruecolor funktioniert nur bei bestimmten GD Versionen
                                           //Falls ein Fehler auftritt, imagecreate nutzen
                                           
    if(function_exists("imagecreatetruecolor"))
                                             
    $thumb imagecreatetruecolor($newwidth,$newheight);
                                           else
                                              
    $thumb imagecreate ($newwidth,$newheight);

                                           if(
    $endung == ".jpg")
                                              {
                                              
    imageJPEG($thumb,$ordner."temp.jpg");
                                              
    $thumb imagecreatefromjpeg($ordner."temp.jpg");

                                              
    $source imagecreatefromjpeg($imgfile);
                                              }
                                           else if(
    $endung == ".gif")
                                              {
                                              
    imageGIF($thumb,$ordner."temp.gif");
                                              
    $thumb imagecreatefromgif($ordner."temp.gif");

                                              
    $source imagecreatefromgif($imgfile);
                                              }

                                           
    imagecopyresized($thumb$source0000$newwidth$newheight$width$height);

                                           
    //Bild speichern
                                           
    if($endung == ".png")
                                              
    imagepng($thumb,$ordner.$filename);
                                           else if(
    $endung == ".gif")
                                              
    imagegif($thumb,$ordner.$filename);
                                           else
                                              
    imagejpeg($thumb,$ordner.$filename,100);


                                           
    //Speicherplatz wieder freigeben
                                           
    ImageDestroy($thumb);
                                           
    ImageDestroy($source);


                                           
    //Pfad zu dem Bild zurückgeben
                                           
    return $ordner.$filename;
                                           }




                                    if (
    move_uploaded_file($_FILES["product_imageurl"]["tmp_name"], $newpath))
                                    {
                                            
    $inform "";
                                            
    $product_imageurl $newpath;
                                    }else
                                    {
                                            
    $inform "Bild konnte nicht verschoben werden!!!";
                                    }
                            }
                    }else
                            
    $product_imageurl = isset($_POST['product_imageurl_text'])?$_POST['product_imageurl_text']: $product_imageurl
    Vielen Dank für die Hilfe
    Jörn

  • #2
    Du solltest deinen Code besser formatieren. Man blickt ja kaum noch durch!

    Zum Erstellen eines Thumbnails hast du zwar eine Funktion, rufst sie aber nicht auf. Dann wird natürlich auch kein Thumb erstellt. ;-)

    Kommentar


    • #3
      1. bissel breit der quelltext.
      2. wird die function thumbnail überhaupt aufgerufen?
      OffTopic:

      ah mist 1ne minute zulang gezögert

      Bitte Beachten.
      Foren-Regeln
      Danke

      Kommentar


      • #4
        Hi,

        ja, die function wird aufgerufen.
        Vielleicht hat ja jemand auch ne andere Lösung, die ich einbauen könnte.
        Wie gesagt, das große Bild wird im korrekten Verzeichnis in der richtigen Größe gespeichert, nur eben kein Thumb.

        Gruß
        Jörn

        Kommentar


        • #5
          Wo wird sie denn aufgerufen, die Funktion "thumbnail"? Im bisher gezeigten Code jedenfalls überhaupt nicht.

          Kommentar


          • #6
            Funktion

            Hi,

            ich habe nur die Funktion direkt in den Quelltext kopiert, damit man alles zusammen hat.
            Normal sieht es so aus:

            PHP-Code:
            $newpath "upload/image/".time(). substr($_FILES["product_imageurl"]["name"],strrpos($_FILES["product_imageurl"]["name"],"."));

                                            function 
            thumbnail();

                                            if (
            move_uploaded_file($_FILES["product_imageurl"]["tmp_name"], $newpath))
                                            {
                                                    
            $inform "";
                                                    
            $product_imageurl $newpath;
                                            }else
                                            {
                                                    
            $inform "Bild konnte nicht verschoben werden!!!";
                                            } 
            Gruß
            Jörn

            Kommentar


            • #7
              Das hat doch damit nichts zu tun, du rufst sie einfach nicht auf, das ist das Problem. Der aktuelle Code erzeugt einen Parserfehler.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                Kurze Nachhilfe fällig. So definiert man eine Funktion:
                PHP-Code:
                function name($parameter, ...) {
                    
                // code

                Jetzt existiert sie, wird aber nicht ausgeführt und bewirkt daher erstmal gar nichts. Um sie auszuführen, muss man sie aufrufen. Das geht so:
                PHP-Code:
                name(...); 
                So einen Aufruf gibt es bei dir nicht! Deine Funktion wird also nicht ausgeführt und deshalb auch kein Thumbnail erstellt.

                Ich hoffe wir haben es jetzt langsam.

                Kommentar


                • #9
                  ok, hab ich gemacht

                  PHP-Code:
                  $newpath "upload/image/".time(). substr($_FILES["product_imageurl"]["name"],strrpos($_FILES["product_imageurl"]["name"],"."));

                        
                  $imgfile $newpath;

                        
                  thumbnail (); 
                  Muss ich aus der Funktion einen Wert zurückgeben?
                  Eigentlich ja nicht, denn das Thumbnail sollte ja on the fly erstellt werden und die Funktion braucht keinen Rückgabewert.
                  Zuletzt geändert von ; 15.12.2010, 09:06.

                  Kommentar


                  • #10
                    Rückgabe muss nicht sein, aber die Funktion erwartet mindestens einen Parameter. Du solltest dringend dein error-reporting schärfer einstellen. Lies unsere Regeln, da steht wie es geht!

                    Kommentar


                    • #11
                      Ich habe mein error reporting einegschaltet mit

                      error_reporting(E_ALL);
                      ini_set('display_errors', 1);

                      Er bringt mir aber keinen Fehler mehr.
                      Leider erstellt er auch kein Thumb und ich weiss nicht, wie ich die function auf ihre Funktionalität testen kann.

                      Kommentar


                      • #12
                        Ich übergebe nun folgendes:

                        PHP-Code:
                        $newpath "upload/image/".time(). substr($_FILES["product_imageurl"]["name"],strrpos($_FILES["product_imageurl"]["name"],"."));

                             
                        $imgfile $newpath;

                             
                        thumbnail ($imgfile);

                             echo 
                        $imgfile
                        Aber in der Variablen $imgfile steht immer noch der alte Pfad drin, den ich vorher aus $newpath bekommen habe, also in dem Fall upload/image/1292335543.gif

                        Allerdings gibt es keine Fehlermeldung sonst...
                        Zuletzt geändert von ; 15.12.2010, 09:06.

                        Kommentar


                        • #13
                          PHP-Code:
                          $imgfile thumbnail($imgfile);
                          var_dump($imgfile); 

                          Kommentar


                          • #14
                            liefert mir ein bool(false) zurück

                            Kommentar


                            • #15
                              Dann schauen wir jetzt in die Funktion und suchen die Stelle(n) wo false zurück gegeben wird. Was steht davor? Wann passiert das?

                              Kommentar

                              Lädt...
                              X