Peter: Fehler bei ImageCreateFromJpeg abfangen

Hallo,

Mein Scipt soll ein hochgeladenes Bild in drei verschiedene Größen
verkleinern. da es sich hierbei um JPGs handelt, passiert es mir bei größeren Bildern (nicht beim Upload, sondern bei der Bearbeitung/Rezise) aufgrund der Memory-Begrenzung das schon das Einlesen des Bildes in einem Memory-Error endet.
wie kann ich einen Memory-Fehler bei einer ImageCreateFromJpeg-Funktion abfangen / auswerten und wie kann ich sicherstellen, das die nachfolgenden Rezise-Vorgänge nicht zu diesem Fehler führen ?

Mfg
Peter

  1. Mit:

    try {

    } catch() {

    }

    Ohne einen größeren Speicher wird dein Bild aber kaum zu bearbeiten sein, da es in jedem Fall geladen werden muss.

  2. echo $begrüßung;

    wie kann ich einen Memory-Fehler bei einer ImageCreateFromJpeg-Funktion abfangen / auswerten und wie kann ich sicherstellen, das die nachfolgenden Rezise-Vorgänge nicht zu diesem Fehler führen ?

    Auswerten lässt er sich gar nicht. Er gehört zur Familie der fatalen Fehler, die ein Script sofort beenden. Sicherstellen dass eine Funktion nicht den maximal erlaubten Speicher überschreitet ist auch ein Ding der Unmöglichkeit, da es keine Informationen gibt, welche Funktion bei welchen Daten wieviel Speicher verbraucht. Du kannst nur das Memory-Limit deaktivieren. Aber will man das auch bei Amok laufenden Scripten?

    echo "$verabschiedung $name";

    1. Hallo nochmal,

      ok, dann eine andere Frage:
      kann ich irgendwie ermitteln, wie groß die hochgeladene JPG-Datei "in echt", also unkromprimiert wäre ?
      Hiermit konnte ich dann den fatalen Aufruf des imagecreate unterbinden (if ($realsize > x)).

      MfG
      Peter

      1. echo $begrüßung;

        kann ich irgendwie ermitteln, wie groß die hochgeladene JPG-Datei "in echt", also unkromprimiert wäre ?

        X × Y × Farbinformation (je 1 Byte für R, G und B)

        wäre eine Faustformel. Aber was die wirklich an Speicher für ein Bild verbraucht wird, und wieviel Speicher die Bearbeitung in Anspruch nimmt, wirst du möglicherweise in der Dokumentation der GD Library oder nur in deren Quelltext sehen können.

        echo "$verabschiedung $name";

  3. Hallo Peter,

    damit hatte ich auch schon so richtig viel Aerger!!! Blick auf meine Website wird erahnen lassen, wieviel Aerger das war...

    Abfangen konnte ich den Fehler nicht, soweit ich mich erinnere, war es sogar so, dass zum Abfragen der Seitenlaenge (noetig zur Berechnung der Speicherbelastung) bereits das Bild geladen werden musste. Bin mir nicht mehr ganz sicher...

    Losgeworden bin ich das alles erst durch ImageMagick: da geht's, weil IM das alles etwas smarter angeht. Mittlerweile komme ich mit 12-Megapixel-Bildern zurecht...
    Und das Beste: die Qualität der verkleinerten Bilder ist wesentlich besser!

    Falls du's also in groesserem Rahmen brauchst, lohnt sich ein Blick in die Richtung!

    Eddie

    --
    Old men and far travforelers may lie with authority.