[PHP] imagecreatefromjpeg Memory Problem/Bug?

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Tairock, 15. Mai 2009 .

Schlagworte:
  1. 15. Mai 2009
    imagecreatefromjpeg Memory Problem/Bug?

    So, habe ein leichtes Problemchen mit imagecreatefromjpeg.
    Ich hab den gleichen Code einmal auf meinem Rechner und einmal auf meinem Server laufen.
    Wenn ich bei meinem Server Dateien nehme mit mehr als 500kb läuft das Script nicht (out of memory).

    Folgenden Code hab ich jetzt zum probieren ergänzt:

    Code:
    [...]
     echo "<br>Vor dem kopieren<br>";
     echo Memory_Get_Usage();
     
     $image_original = imagecreatefromjpeg($_FILES['photo']['tmp_name']);
    
     echo "<br>Nach dem kopieren<br>";
     echo Memory_Get_Usage();
    [...]
    
    Auf meinen Localhost läuft XAMPP PHP V.: 5.2.6, 8mb Memory Limit
    Webserver: 5.2.8, 64mb Memory Limit

    Ergebnis bei ungefähr gleicher Bildgröße (160kb)
    Localhost
    Code:
    Vor dem kopieren
    424144
    Nach dem kopieren
    424324
    
    Webserver
    Code:
    Vor dem kopieren
    477864
    Nach dem kopieren
    1853200
    
    Hat jemand eine Idee für das "Problem" oder weiß einer warum das so ist? Es wird immerhin der benötigte Speicher verdoppelt?

    Danke schon mal vorweg
     
  2. 15. Mai 2009
    AW: imagecreatefromjpeg Memory Problem/Bug?

    war grad kurz am überlegen ob ich den thread direkt lösche, denn deine rechtschreibung is unter aller sau.

    wie dem auch sei: wenn du imageCreateFromXXX aufrufst musst du den speicher selber wieder freigeben mit imageDestroy($imageHandle). dann hast du den ganzen, zuvor vergebenen speicher wieder zur verfügung.

    //rechtschreibung verbessert
     
  3. 15. Mai 2009
    AW: imagecreatefromjpeg Memory Problem/Bug?

    Danke für deine Antwort,

    Ich habe mal deine Worte mal in kurze Taten umgesetzt.
    Leider passt der Rest überhaupt nicht zum Thema, es geht nicht darum wie ich den Speicher wieder Frei bekomme, es geht darum wieso dieser Befehl bei der einen Version "normal" den Speicher belegt und bei der anderen Version/Server auf einmal total überdimensional viel Speicher beansprucht.
     
  4. 16. Mai 2009
    AW: imagecreatefromjpeg Memory Problem/Bug?

    naja, rechne doch selber aus wie viel speicher das ganze benötigt:

    PHP:
    $imageInfo  getImageSize ( $imageFilename );
    $memoryNeeded  round (( $imageInfo [ 0 ] *  $imageInfo [ 1 ] *  $imageInfo [ 'bits' ] *  $imageInfo [ 'channels' ] /  Pow ( 2 16 )) *  1.65 );

    print 
    'bild benötigt '  $memoryNeeded  ' bytes' ;
    die dateigröße spielt dabei erstmal keine rolle
     
  5. 16. Mai 2009
    AW: imagecreatefromjpeg Memory Problem/Bug?

    //edit hab deine lösung noch nicht durch gelesen, sec
    //edit2 ich mache morgen weiter

    Ich glaub ich habe mich etwas schlecht ausgedrückt, dass Problem was ich einfach habe, bei mein localhost brauch er ca. 180 (byte/bit?) bei meinen Webserver hingegen 1.375.336 byte/bit (?) NUR bei
    Code:
    $image_original = imagecreatefromjpeg($_FILES['photo']['tmp_name']); 
    
    und das ist nen bissel viel für mich und ich möchte halt gerne wissen woran das liegen könnte.
     
  6. 16. Mai 2009
    AW: imagecreatefromjpeg Memory Problem/Bug?

    ich hab das mal eben selber getestet:

    php5.3rc1 @ windows xp sp3
    Code:
    bild informationen:
    breite = 2000 px
    hoehe = 695 px
    groesse = 253443 byte
    benoetigter speicher = 6988634 byte
    
    speicher vor dem oeffnen = 322704 byte
    geschaetzer speicher nach dem oeffnen = 7311338 byte
    speicher nach dem oeffnen = 7297032 byte
    speicher nach dem schliessen = 323008 byte
    php5.3rc2 @ gnu/linux debian4.0
    Code:
    bild informationen:
    breite = 2000 px
    hoehe = 695 px
    groesse = 253443 byte
    benoetigter speicher = 6988634 byte
    
    speicher vor dem oeffnen = 316468 byte
    geschaetzer speicher nach dem oeffnen = 7305102 byte
    speicher nach dem oeffnen = 7290860 byte
    speicher nach dem schliessen = 316844 byte
    liegt wohl an deinem bild
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.