Problem bei der Generierung von thumbnails mit gd

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

  • #16
    Original geschrieben von tbesand

    PS: "could not allocate" wg. memory_limit bei einem Bild von max. 3,5 MB? Klingt das wahrscheinlich?

    vg
    /T
    Das ist schon möglicj - die GD muß das Bild nämlich "im Original" auspacken. Das sind, bei Truecolor, 3 byte pro Pixel, bei deinem Beispielbild also 3,27 Megapixel * 3 = 9,83 MB. Dann noch ein bisschen Overhead, und schon ist der Speicher voll... Das könnte also schon sein.
    Das Beispielbild, das funktioniert hat, ist in der Summe etwas kleiner.
    Zuletzt geändert von pekka; 09.12.2008, 13:39.

    Kommentar


    • #17
      Original geschrieben von tbesand
      PS: "could not allocate" wg. memory_limit bei einem Bild von max. 3,5 MB? Klingt das wahrscheinlich?
      [/B]
      das Kann durchaus sein. Lass Dich nicht durc die Grösse des Ursprugsbildes täuschen. memory_limit gilt a) für dein gesamtes script und b) wird mehr memory in der Bilderstellung gebraucht als die hochgeladene Datei hat.

      Das eine Funktion ohne Fehler einfach abgebrochen gibt es nicht wenn Du Dein Fehlerreporting richtig eingestellt hast.

      Welche php Version hast Du?
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #18
        lass Dir mal var_dump(memory_get_usage());
        ausgeben
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #19
          Schönen Dank für Eure Mühe und viele neue Anregungen- mittlerweile denke ich auch, daß beim Generieren der Voransicht das memory_limit überschritten wird.

          Habe mir in den entsprechenden Passagen mal memory_usage ausgeben lassen.
          Für o.g. Bild 1075-2008 (welches durchläuft)
          http://falklund.de/pic/1075-2008.jpg_1228504926.jpg
          erhalte ich nach imagecreatefromjpeg() 14.757.312 und dann nach imagecreatetruecolor 16.676.312 bytes.
          Gerade noch ganz knapp unter 16M (16.777.216).
          Für das (problematische Bild) 0853-2007
          http://falklund.de/pic/0853-2007.jpg_1228504350.jpg
          erhalte ich nach imagecreatefromjpeg() 15.231.552 bytes und dann bekanntermassen nichts mehr ;-)

          Aber auf die Gefahr hin, daß es nervt: im Falle des problematischen Bildes ist es so, daß das Script nach Aufruf von imagecreatetruecolor() abbricht, und ich erhalte keine Fehlermeldung. Sonst hätte ich die Ursache ja auch schon schneller erkennen können.
          Ich habe ein error_reporting(E_ALL) in die erste Zeile der Funktion thumbnail() gesetzt. Außerdem steht es auch in den aufrufenden Scripts ganz am Anfang.
          So, und jetzt muss aber auch bald Schluss sein hier- wir sind schon deutlich über 15 Beiträgen...

          /T
          Zuletzt geändert von tbesand; 09.12.2008, 17:53.

          Kommentar


          • #20
            setz doch mal das memory limit hoeher so auf 32 mb
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #21
              Das sind, bei Truecolor, 3 byte pro Pixel,
              5 Byte!
              + ca 31KB pro 1000 Zeilen (y)
              Wir werden alle sterben

              Kommentar


              • #22
                5 Byte? Nee oder? Jeweils 256 Abstufungen = 1 Byte x 3 (Rot, Grün, Blau)... Außer du arbeitest noch mit Alphakanälen, aber das ist eine andere Baustelle.

                Lasse mich aber gerne korrigieren...

                Kommentar


                • #23
                  Ich habe woanders mal einen Artikel dazu verfasst:
                  http://phpforum.de/forum/showthread.php?t=222506

                  Zusammengefasst:
                  Die GD kennt nur 2 interne Repräsentationen der Bilddaten. Das Indexierte mit Farbtabelle und das mit Alphakanal.
                  Zuletzt geändert von combie; 09.12.2008, 18:47.
                  Wir werden alle sterben

                  Kommentar


                  • #24
                    Original geschrieben von combie
                    Für jedes Pixel reserviert GD 5 Byte.
                    Diese 5 Byte teilen sich auf in:

                    * Farbe: Rot 1 Byte
                    * Farbe: Grün 1 Byte
                    * Farbe: Blau 1 Byte
                    * Alpha Kanal 1 Byte
                    * Und 1 Byte für KA was (wer es weiß, möge es hier bitte eintragen)
                    Gut zu wissen!

                    Kommentar

                    Lädt...
                    X