Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] GDLIB -> Fehler : xxx.jpg is not a valid JPEG file

Einklappen

Neue Werbung 2019

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

  • [Erledigt] GDLIB -> Fehler : xxx.jpg is not a valid JPEG file

    Hallo allerseits...

    Mein Provider (Schlund und Partner) hat auf GDLIB 2.0.21 und PHP 4.3.6 umgestellt.

    Auf diesem Webspace betreiben wir ein Bildportal mit Nachbestellmöglichkeit ( http://www.picsbay.de ).

    Nach der Umstellung bekamen wir beim Bildupload und anschliessendem Erstellen der Thumnails folgende Fehlermeldung:
    xxx.jpg is not a valid JPEG file
    Die jpg-Datei ist aber nachweislich ok ! Der Fehler tritt auch nur bei höher aufgelösten Bilder auf (z.B. 2288x1712 Pixel) auf.
    Dies sind aber Auflösungen die beim Digitalen Fotografieren häufig vorkommen.

    Auslösend für diesen Fehler ist die Funktion imagecreatefromjpeg der gdlib.
    Angesport von dieser Entdeckung und um die Möglichkeit einer fehlerhaften JPG-Datei habe ich dann versucht eigene JPG-Dateien
    mit der GDLIB zu generieren (Siehe Code).

    Der Fehler tritt auch beim Versuch auf eine TrueColor-Grafik mit mehr als ca. 3,2 MegaPixeln zu erstellen.
    So funktioniert es noch eine Grafik mit 2200x1500 Punkten aufzubauen aber nicht mehr mit 2300x1500 Punkten.
    Bei jeder Kombination mit mehr als 3.300.000 Pixeln steigt die Funktion imagecreatetruecolor also auch aus.

    Ich habe hierzu ein Testscript erstellt. Ihr könnt es selbst mal ausprobieren unter http://www.picsbay.de/test/gd_test.php

    Irgendwie habe ich den Verdacht das es sich hier irgendwie um ein Speicherproblem handelt, denn auf meinem Server läuft alles problemlos...

    Ganz schön kniffelig ... gelle...

    Also, ich bin um jeden Tip oder Workaround dankbar... Danke im voraus....

    Klaus

    Hier das Test-Script:
    Code:
    <?php
    $sx=$_SERVER['SCRIPT_NAME']; $pos= strrchr ($sx,"/"); if ($pos!=false) {$sx=substr ($sx, 0, strlen($sx)-strlen($pos));}
    $pfad=$_SERVER['DOCUMENT_ROOT'].$sx."/"; 
    $zielname=$pfad."zieldatei.jpg";
    $ysize=1500;
    
    for ($ix=1700;$ix<=2700;$ix=$ix+100)
    {
     //True-Color-Bild erzeugen
     $im = imagecreatetruecolor($ix, $ysize);
     //Vorhandene Zieldatei löschen
     @unlink($pfad.$zielname);
     //Bild abspeichern
     imagejpeg($im,$zielname);
     //Speicher freigeben
     imagedestroy($im);
     //Grösse des gespeicherten Bilds ermitteln
     $arbd=getimagesize($zielname);
     
     if (!isset($arbd[0])) 
     {
      //Zieldatei wurde nicht erstellt
      echo "Fehler : Grafik mit ".$ix." x ".$ysize." = ".$ix*$ysize." Pixel konnte nicht erstellt werden !
    ";
     }
     else
     {
      //Zieldatei wurde erstellt
      echo "OK     : Grafik mit ".$arbd[0]." x ".$arbd[1]." = ".$arbd[0]*$arbd[1]." Pixel konnte erstellt werden !
    ";
     } 
    }    
    //Eventuell vorhandene Zieldatei löschen
    @unlink($zielname);
     
    echo "
    
    GDLIB-Info:
    ";
    $gdi=gd_info(); reset ($gdi); while (list ($key, $val) = each ($gdi)) {echo "$key => $val
    ";}
    ?>


  • #2
    Re: GDLIB -&gt; Fehler : xxx.jpg is not a valid JPEG file

    Zitat von Gnohmi
    Nach der Umstellung bekamen wir beim Bildupload und anschliessendem Erstellen der Thumnails folgende Fehlermeldung:
    xxx.jpg is not a valid JPEG file
    Die jpg-Datei ist aber nachweislich ok ! Der Fehler tritt auch nur bei höher aufgelösten Bilder auf (z.B. 2288x1712 Pixel) auf.
    Dies sind aber Auflösungen die beim Digitalen Fotografieren häufig vorkommen.
    Beachtet Ihr auch den Speicherbedarf bei solchen dicken Bildern? IdR. müssen PHP Scripte mit 8MB RAM auskommen.

    Ansonsten müßtestg Du mir mal einen Link auf ein solches JPG geben, damit ich das mal auf meiner Kiste testen kann.

    Kommentar


    • #3
      Re: GDLIB -&gt; Fehler : xxx.jpg is not a valid JPEG file

      Hallo

      Hab mal ein typisches Bildchen unter http://www.picsbay.de/test/lion.jpg abgelegt...
      Orginalauflösung 2288 x 1712 Punkte 835KB

      Gruss Klaus

      Kommentar


      • #4
        Re: GDLIB -&gt; Fehler : xxx.jpg is not a valid JPEG file

        Zitat von Gnohmi
        Orginalauflösung 2288 x 1712 Punkte 835KB
        OK. Ist allerdings sehr dick. Wenn ich mich nicht irre, nutzt GD für Veränderungen ein internes Format. Und da kann es durchaus möglich sein, daß da die 8MB RAM fix weg sind. Eben mal als TIFF gespeichert: satte 8 MB. Da habe ich Zweifel, ob Du das mit PHP hinkriegst.

        Mit ImageMagick (convert) ist sowas allerdings absolut keine Hürde.

        Allerdings weiß ich nicht, ob Ihr einen eigenen Server habt und dieses Linuxprogramm installieren könnt. Ansonsten: Provider fragen...

        Ich teste das aber erstmal auf meiner Kiste, ob es wirklich am Speicher liegt!

        Kommentar


        • #5
          Hallo

          Danke erstmal für die Bemühungen...
          Intressant an der Sache ist eben das das Erstellen eines Bildes mit imagecreatetruecolor ach nur bis zu einer bestimmten Grösse funktioniert.

          Ich denke mal das das Reservieren von Speichern bei imagecreatetruecolor und imagecreatefromjpeg ziemlich ähnlich läuft. Warscheinlich wird auch bei beiden Funktionen ähnlich viel Speicher benötigt.

          Nen Admin-Zugang auf den Webspace habe ich leider nicht.
          Aber eigene CGI's können verwendet werden.

          Könnte man ImageMagick oder ein anderes Konvertierungstool vielleicht als CGI aufrufen ?

          Gruss
          Klaus

          Kommentar


          • #6
            Zitat von Gnohmi
            Ich denke mal das das Reservieren von Speichern bei imagecreatetruecolor und imagecreatefromjpeg ziemlich ähnlich läuft. Warscheinlich wird auch bei beiden Funktionen ähnlich viel Speicher benötigt.
            PHP muß das alte und das neue Bild in den Speicher kriegen. Und da daraus erst mal ein "Pixel-Bild" gebastelt werden muß und bei vielen Providern 8MB eingestellt sind, wars das wahrscheinlich schon.

            Könnte man ImageMagick oder ein anderes Konvertierungstool vielleicht als CGI aufrufen ?
            Das wäre der andere Weg, ein passendes Konvertierungsprogramm aufzurufen. Kläre ab, ob Dein ISP ImageMagick installiert hat. /usr/bin/convert wäre dann Dein Freund. Im INet gibt es dazu haufenweise Hilfe und Beispiele.

            Kommentar


            • #7
              Hallo

              Ich hab jetzt nochmal die PHPINFO eingesehen.
              Habe folgendes Memory-Limit :
              memory_limit 40M

              Das müsste doch eigentlich reichen um ne Bitmap mit > 2300 x 1500 Punkten per imagecreatetruecolor aufzubauen oder ?

              Ich hab noch einen Thread hier im Forum gesehen mit dem Thema
              Thumbsproblem bei Bilder > 1 MB
              könnte es sich hierbei vielleicht um das gleiche Problem handeln ?

              Hat noch jemand ne Idee was ich noch testen könnte ?

              Gruss Klaus

              Kommentar


              • #8
                Zitat von Gnohmi
                Hat noch jemand ne Idee was ich noch testen könnte ?
                Guck Dir einfach das mal an:
                http://test.php-help.info/img-6/

                Original ist das Bild lion.jpg von Dir.

                Kommentar


                • #9
                  Hallo Meikel

                  Danke für die Mühe... Ist ja ein super Service hier...

                  Werde das Script mal auf meinem Webspace testen. Bin echt mal gespannt....
                  Bin mir zwar ziemlich sicher das mein Thumb-Script auch OK ist, aber oftmals sieht man ja den Wald vor lauter Bäumen nicht mehr

                  Gruss Klaus

                  Kommentar


                  • #10
                    Zitat von Gnohmi
                    Danke für die Mühe... Ist ja ein super Service hier...
                    Ich benötige ganz wenig Grafikbearbeitung, aber ein Script, um Bilder einzudampfen, kann auch ich ab und zu mal gebrauchen.

                    Kommentar


                    • #11
                      Hallo

                      @meikel

                      Habe Dein Script jetzt mal auf meinen Schlund-Server gestellt. Das Bild ist auch vorhanden.
                      Es passiert jetzt folgendes : Es wird ein Thumb mit dem Namen image_tmb.jpg in der richtigen Grösse erstellt. Allerdings ist das Bild komplett schwarz.
                      Hier der Link zum Script von meikel: http://www.picsbay.de/test/gd_test1.php

                      Sieht jetzt so aus wie die Problematik die im Thread
                      Thumbsproblem bei Bilder > 1 MB
                      beschrieben wird oder ?

                      Gruß Gnohmi

                      Kommentar


                      • #12
                        Zitat von Gnohmi
                        Es passiert jetzt folgendes : Es wird ein Thumb mit dem Namen image_tmb.jpg in der richtigen Grösse erstellt. Allerdings ist das Bild komplett schwarz.

                        Sieht jetzt so aus wie die Problematik die im Thread
                        Thumbsproblem bei Bilder > 1 MB
                        beschrieben wird oder ?
                        KA. An meinem funktionierendem Beispiel siehste ja, daß es klappt. Hau mal die Hotline an, gib denen beide Links und frage die, warum das auf meiner Kiste will und auf deren nicht.

                        Kommentar

                        Lädt...
                        X