Memory Problem mit Bildscript

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

  • Memory Problem mit Bildscript

    Ich habe ein Script entwicklt welches durch den Benutzer hochgeladene Bilder verkleinert. Nun hab ich das Problem, das ab einer bestimmten Größe der Bilder mein Speicher von 20MB nicht ausreicht.

    Gibt es eine Möglichkeit irgendwo wieder Speicher während des Ablaufes des Scripts freizumachen?

    Hier mein Script:

    PHP-Code:
    $im imagecreatefromjpeg($image);

    #Erzeugung Vollbild
    $new_image imagecreatetruecolor($new_image_width$new_image_height);
    imagecopyresampled($new_image$im0000new_image_width
    $new_image_height$image_width$image_height);
    imagejpeg($new_image"/home/www/web513/html/site/images/galerie
    /
    $dir/$strFileName"100);

    imagedestroy($im);
    $im imagecreatefromjpeg($image); 

  • #2
    Also ich habe gerade mal verschieden Bilder getestet! Das maximalste was ich uploaden konnte war ein Bild mit folgeneden werden:
    Auflösung: 1600x1200
    Größe: 876 KB (897.485 Bytes)

    Wäre ja auch ausreichend für ein Bild, aber der Kunde arbeitet mit ner Auflösung von 2048x1536 und da komm ich mit meinen 20MB Memory nicht hin

    Kommentar


    • #3
      Auflösung: 1600x1200
      Größe: 876 KB (897.485 Bytes)
      Die Dateigröße die ein Bild als .jpg gespeichert verbraucht sagt nichts über den Speicherverbrauch aus, wenn es zum bearbeiten geöffnet wird aus, weil es hierfür wieder dekomprimiert wird, das nur mal nebenbei.

      Ohne mehr Speicher wirds schwierig werden. Evtl. Bild in 2 Schritten verkleinern, erst die obere, dann die untere Hälfte, aber nen genauen Ansatz hab ich dafür jetzt ned im Kopf. Evtl. würde schon die Aufteilung in 2 Hälften die gleichen Speicherprobleme verursachen

      Gruss
      Quetschi
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #4
        Kannst du memory_limit in der php.ini höher setzen? Das geht nicht zur Laufzeit, da kannst du dir mit get_memory_usage() nur anzeigen lassen, wieviel du gerade verbrauchst.

        Kommentar


        • #5
          Jo, das mit dem Speicherverbrauch als .jpg weiß ich! Geht halt nur um die Auflösung! Um so höher die ist, um so größer wird das per imagecreatefromjpeg() Bild, da das ja unkomprimiert ist!

          Eine andere Möglichkeit das hochgeladene Bild zu verkleinern gibt es nicht, oder?

          Kommentar


          • #6
            Da du dein MemoryLimit scheinbar nicht selber erweitern kannst gehe ich davon aus, dass du ein Webspace-Packet hast und keinen eigenen (V-)Server.

            Weist du ob du ImageMagick zur Verfügung hast?
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #7
              Original geschrieben von onemorenerd
              Kannst du memory_limit in der php.ini höher setzen? Das geht nicht zur Laufzeit, da kannst du dir mit get_memory_usage() nur anzeigen lassen, wieviel du gerade verbrauchst.
              Kann die php.ini nicht verändern, da es nicht mein eigener Server ist. Habe mir mal mit memory_get_usage() den derzeit belegten Speicher anzeigen lassen (vor imagecreatefromjpeg) da sind schon mal 118600Bytes. Eventuell kann ich mal probieren alle Vriablen mit unset zu leeren, die ich im Nachhinein nicht mher brauch!?

              Ist eigentlich unset($var1, §var2, §var3, ...) möglich?

              Kommentar


              • #8
                Original geschrieben von CodeBlue
                Ist eigentlich unset($var1, §var2, §var3, ...) möglich?
                Nein, aber unset($var1, $var2, $var3) geht
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Original geschrieben von Quetschi
                  Weist du ob du ImageMagick zur Verfügung hast?
                  Klär ich gerade! Hab auch mal angefragt, ob die das "Memory_limit" hochsetzen können.

                  Das leeren der vorangehenden Variablen bringt leider nicht viel. Hab den Kunden jetzt angewiesen über ne Freeware die Bilder vorher von der Auflösung her herunter zu setzen. Is aber auch nicht die beste Lösung!

                  Wenn jemanden noch irgend etwas einfallen sollte um den Speicherverbrauch nicht so hoch zu treiben, wäre ich sehr dankbar!

                  Kommentar

                  Lädt...
                  X