Bild speichern mit imagejpeg()

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

  • Bild speichern mit imagejpeg()

    folgendes Script soll eine Datei mit Bildern auslesen und diese mit einem Banner(Schablone) in einer neuen Datei speichern :
    Das Auslesen funktioniert und das erste Bild wird wie gewuenscht im neuen Ordner gespeichert, nur dann kommt die Fehlermeldung :

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1638400 bytes) in /home/rossixx/public_html/alle_bilder/bilder_2_schleife.php on line 43


    PHP-Code:
    :
    function 
    read_dir($dir$pos=0){ 
        
    $handle = @opendir($dir); 
        while (
    $file = @readdir ($handle)) { 
            if (
    eregi("^.{1,2}$",$file)) { 
                continue; 
            } 

            if (
    is_dir($dir.$file)) { continue; 

            } else { 
                if (
    substr($file,-4) == '.jpg' || substr($file,-4) == '.gif' ) { 
                    echo 
    $file."<br>"
                            
    $pfad "/home/rossixx/public_html/alle_bilder/vorlagen/";
    $imgquelle imagecreatefrompng("$pfad"."schablone_2.png"); //Die Schablone

    $xquelle imagesx($imgquelle); //Ermittlung der Bildbreite
    $yquelle imagesy($imgquelle); //Ermittlung der Bildhoehe
    $pfad_2 "/home/rossixx/public_html/alle_bilder/bilder_2/";
    $imgziel imagecreatefromjpeg("$pfad_2"."$file"); //Hier schablone spaeter drauf

    imagecopyresized($imgziel$imgquelle0,00,0$xquelle,$yquelle$xquelle,$yquelle); //Hier wird $imgquelle auf $imgziel kopiert
    $dir_neu =  "/home/rossi/public_html/alle_bilder/bilder_schleife_fertig/".$file ;

    imagejpeg($imgziel,$dir_neu,85); // hier wird das neue Bild gespeichert 
                    
                

            } 
        } 
        @
    closedir($handle);  
    }
    // funktionsaufruf !!! - 
    // verzeichnis was gelesen und bearbeitet werden soll wird  uebergeben
    read_dir("bilder_verzeichnis"); 
    folgende Fehlermeldung bekomme ich :

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1638400 bytes) in /home/rossixx/public_html/alle_bilder/bilder_2_schleife.php on line 43
    Zuletzt geändert von rossixx; 03.01.2005, 15:21.
    fotos :

    http://www.flickr.com/photos/rassloff/collections/

  • #2
    http://www.php-resource.de/forum/sho...threadid=47906
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Bilder zusammenfuegen und speichern

      Meine Frage ist warum musste ich diese Zeilen einfuegen, damit die Funktion durch laufen kann, wie sie soll ?????


      $imgziel = '';
      $imgquelle = '';

      das Problem war , das ich dachte , das in der schleife die Variablen eh immer neu ueberschrieben werden.


      PHP-Code:

      function read_dir($dir$pos=0){    
          
      $handle = @opendir($dir); 
          while (
      $file = @readdir ($handle)) {         
                  if (
      eregi("^.{1,2}$",$file)) {             
                        continue; 
                  } 
                 if (
      is_dir($dir.$file)) {
                        continue; 
                 } 
                else {             
                        if (
      substr($file,-4) == '.jpg' || substr($file,-4) == '.gif' ) {   
                                echo 
      $file."<br>";                         
                                
      $pfad "/home/rossixx/public_html/alle_bilder/vorlagen/";
                                
      $imgquelle imagecreatefrompng("$pfad"."schablone_2.png"); //Die Schablone
                                
      $xquelle imagesx($imgquelle); //Ermittlung der Bildbreite
                                
      $yquelle imagesy($imgquelle); //Ermittlung der Bildhoehe
                                
      $pfad_2 "/home/rossixx/public_html/alle_bilder/bilder_2/";
                                
      $imgziel imagecreatefromjpeg("$pfad_2"."$file"); //Hier schablone spaeter drauf
                                
      imagecopyresized($imgziel$imgquelle0,00,0,                      $xquelle,$yquelle$xquelle,$yquelle); //Hier wird $imgquelle auf $imgziel kopiert
                               
      $dir_neu =  "/home/rossi/public_html/alle_bilder/bilder_schleife_fertig/".$file ;
                               
      imagejpeg($imgziel,$dir_neu,85); // hier wird das neue Bild gespeichert 
                               
      $imgziel '';  // neu eingefuegt
                               
      $imgquelle '';    // neu eingefuegt             
                 

             } 
          } 
          @
      closedir($handle);  
      }
      // funktionsaufruf !!! - 
      // verzeichnis was gelesen und bearbeitet werden soll wird  uebergeben
      read_dir("bilder_verzeichnis"); 
      fuer Hinweise zu meinen Fehlern waere ich dankbar !!!
      Zuletzt geändert von rossixx; 03.01.2005, 16:58.
      fotos :

      http://www.flickr.com/photos/rassloff/collections/

      Kommentar


      • #4
        Mach dich mal mit Referenzen ( & ) vertraut

        vielleicht kannst du paar byte sparen, indem du den das Bild nicht von der Funktion auf eine Variable kopierst, sondern die Variable als Referenz auf das Ergebnis der Funktion setzt

        also $bild = &function(...);

        könnte sein, dass es dann reicht


        An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

        Kommentar


        • #5
          weiß kein mensch, vorallem weil du weder sinnvolle umbrüche, in deinem code hast, noch sonstige strukturierung.

          Kommentar

          Lädt...
          X