Bild verkleinern

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

  • Bild verkleinern

    Hallo miteinander

    Ich habe ein sehr komisches Problem;
    Ich mache ein Bildupload und erstelle ein Thumb. Soweit funktioiert alles.
    Nun habe ich ein zusätzliches Upload erstellt, welches das Bild aus einem Zip entpackt und in ein Verzeichnis auf den Server legt. Das funzt auch!
    Nun will ich ein Thum aus diesem Bild erstelle mittels der selben Funktion wie beim Bildupload.

    Leider funzt das nicht immer, bei gewissen Bilder (kleine und leichte) wird das Thum nicht erstellt!!! Weiss hier jemand einen Tipp, ich bin mit meinem Latein am Ende.

    Hier ie Uploadfunktion welche beim direkten Bildupload einwandfrei und immer funzt.
    PHP-Code:
    function make_thumb($img_src$img_width$img_height$des_src$endung$quali '96')

        
    $im imagecreatefromjpeg($img_src); 
        list(
    $src_width$src_height) = getimagesize($img_src); 
        if ((
    $src_width $src_height) or ($src_width $src_height))
        { 
            if(
    $src_width $src_height)
             { 
            
    $new_image_width $img_width
            
    $new_image_height $img_width / ($src_width $src_height ); 
            } 
            if(
    $src_width $src_height)
             { 
            
    $new_image_height $img_height
            
    $new_image_width $src_width $src_height $img_height 
            } 
        }
        else
        { 
            
    $new_image_width '75'
            
    $new_image_height '75' / ($src_width $src_height ); 
        }
    $new_image imagecreatetruecolor($new_image_width$new_image_height); 
    imagecopyresampled($new_image$im0000$new_image_width,$new_image_height$src_width$src_height);
    imagejpeg($new_image$des_src$quali); 
    imagedestroy($img_src);
    }

                @
    make_thumb("$img_scr""$bildtmform""$bildtmform""$image_upload_path_tn/$bildfile_tn"99); 

  • #2
    error_reporting hochdrehen und mach das @ vor dem funktionsaufruf weg. das hast du da doch bestimmt net ohne grund hingeschrieben
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      vielleicht solltest du mal hier die fehlerausgabe nicht unterdrücken:
      PHP-Code:
      @make_thumb("$img_scr""$bildtmform""$bildtmform""$image_upload_path_tn/$bildfile_tn"99); 
      dann erfährst du auch ggf., wo das problem liegt. außerdem ist diese schreibweise ziemlicher tinnef. das hier tuts auch:
      PHP-Code:
      make_thumb($img_scr$bildtmform$bildtmform$image_upload_path_tn.'/'.$bildfile_tn99); 
      allerdings scheints du mit deinen parameter ein wenig durcheinander gekommen zu sein. das hier sind 6
      PHP-Code:
      function make_thumb($img_src$img_width$img_height$des_src$endung$quali '96'
      aber hier rufst du nur 5 auf:
      PHP-Code:
      @make_thumb("$img_scr""$bildtmform""$bildtmform""$image_upload_path_tn/$bildfile_tn"99); 
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Diese Fehlermeldung kommt:

        Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /srv/www/webxxx/html/templ/sys_bild/bild_funktion.inc.php on line 38
        Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'http://www.url.ch/upload/bild 08 (45).jpg' is not a valid JPEG file in /srv/www/webxxx/html/templ/sys_bild/bild_funktion.inc.php on line 38
        EDIT:
        by TobiaZ: Warum benutzt man PHP-Code Tags für Zitate?
        Zuletzt geändert von TobiaZ; 29.12.2008, 17:09.

        Kommentar


        • #5
          könnte was mit bildern zu tun haben die leerzeichen enthalten
          Gruß
          Uzu

          private Homepage

          Kommentar


          • #6
            Leerzeichen im Namen habe ich bereits alle zu test zwecken entfernt. Und zudem funktionier das selbe Bild beim einzel Upload

            Kann mir denn niemand helfen?
            Zuletzt geändert von sepp; 29.12.2008, 17:03.

            Kommentar


            • #7
              Leerzeichen im Namen habe ich bereits alle zu test zwecken entfernt. Und zudem funktionier das selbe Bild beim einzel Upload

              Kann mir denn niemand helfen?

              Kommentar


              • #8
                Bist du sicher, dass imagecreatefrom mit entfernten Dateien arbeiten kann?

                PS: Bitte in Zukunft das Drängeln unterlassen.
                Zuletzt geändert von TobiaZ; 29.12.2008, 17:10.

                Kommentar


                • #9
                  Nein, das bin ich nicht, was für eine Alternative zu imagecreateform gibt es denn?

                  Ja, sorry ich unterlasse das Drängeln in Zukunft. Aber ich bin am verzweifeln!

                  Kommentar


                  • #10
                    Nein, das bin ich nicht,
                    Warum überpüfst du das nicht, sondern programmierst ins blaue hinein?

                    was für eine Alternative zu imagecreateform gibt es denn?
                    Alternativen gibt es viele. Wenn du den Rest des Codes beibehalten willst, könntest du mal in die User Contributed Notes gucken, da steht was man tun kann, um trotzdem noch bei den GD-Funktionen zu bleiben.

                    Kommentar


                    • #11
                      Beim ersten Überfliegen ist mir folgendes aufgefallen:

                      PHP-Code:
                      function make_thumb($img_src$img_width$img_height$des_src$endung$quali '96')

                          
                      $im imagecreatefromjpeg($img_src); 
                      ... 
                      imagedestroy($img_src); 
                      imagedestroy() erwartet eine Image-Resource als Parameter. Was passiert, wenn du einen Dateinamen übergibst, hab ich noch nicht ausprobiert, aber mindestens eine Warnung sollte PHP schon ausspucken.

                      Um deinem eigentlichen Problem auf den Grund zu gehen, müsstest du genauer feststellen, um welche Dateien oder Dateitypen es sich handelt, bei denen der Fehler auftritt. Ich sehe bspw. dass du zwar Höhe und Breite mit getimagesize() abfragst, aber nicht prüfst, ob es sich überhaupt um eine JPEG-Datei handelt. imagecreatefromjpeg() kann aber nur diese lesen. Auch ist es keine gute Idee, den Rückgabewert von getimagesize() mit list () abzufangen, denn in dem Fall kannst du den Rückgabewert FALSE, der bei Fehler auftritt, nicht erkennen. Außerdem gibts dann wieder 'ne Warnung (bei eingeschaltetem error_reporting(E_ALL)). Besser ist das so:
                      PHP-Code:
                      $im_info getImageSize();
                      if (
                      FALSE === $im_info) {
                        
                      // deine Fehlerbehandlung oder
                        
                      die('could not detect image type!');

                      Wenn du von anderen Servern Grafik-Dateien zu Thumbnails machen willst, musst du dir diese auch erst holen. Das geht am einfachsten mit file_get_contents(). Danach kannst du die Grafik mit imageCreateFromString() einlesen. Dieser Trick setzt aber voraus, dass file_get_contents() von entfernten Resourcen Dateien lesen kann. Dafür benötigt es aktivierte "URL-fopen-wrappers". Das gleiche könnte für imageCreateFromJpeg() gelten -- so genau weiß ich das jetzt nicht. Aber der Umweg über file_get_contents() hat den Vorteil, dass eine aussagekräftigere Fehlermeldung erscheint, falls das URL-Wrapping deaktiviert ist.

                      Falls das Laden über URLs nicht geht, brauchst du Zugriff auf die PHP.ini, dort kann man das einstellen. Es gibt zwar noch andere Optionen (curl, fsockopen und Co., ...), aber die sind meistens auch nicht aktiviert oder für deinen Wissensstand wahrscheinlich noch etwas zu hoch.

                      Leerzeichen in Pfadangaben hingegen stellen heut zu Tage weder eine Seltenheit noch ein Problem dar. Allerdings ist "http://www.url.ch/upload/bild 08 (45).jpg" keine valide URL, denn da müssten statt der Leerzeichen " " eben "+" oder "%20" stehen. urlencode() ist dein Freund. ;-)

                      Was aber ein Problem darstellt, ist deine Pfadbastelei: "$image_upload_path_tn/$bildfile_tn"
                      Lass dir vor dem Aufruf deiner Funktion die beiden Bestandteile zur Probe ausgeben. Außerdem kannst du mit file_exists("$image_upload_path_tn/$bildfile_tn") überprüfen, ob die Datei überhaupt existiert. Und schließlich solltest du immer(!) sicherstellen, dass beide keinen "Unsinn" enthalten, besonders, wenn sie aus Benutzereingaben erstellt wurden. Sonst überschreibt imagejpeg() womöglich Dateien, die du gerne behalten hättest.
                      Zuletzt geändert von fireweasel; 30.12.2008, 11:08.
                      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                      Kommentar

                      Lädt...
                      X