Memory_limit Problem => imageCreatefromJpeg

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

  • Memory_limit Problem => imageCreatefromJpeg

    Hi Leute,

    ich hätte gerne mal gewußt, wie man den Speicher berechnen kann, den der Befehl imageCreatefromJpeg braucht um ein bestimmtes Format umzurechnen.

    Angenommen ich habe ein 1224*1632 großes Bild. Es hat eine gesamte Pixelanzahl von 1997568, die man mal 3Byte multiplizieren muß, oder? so, jetzt haben wir die gesamte Anzahl der Bytes für dieses Bild, nämlich 5992704.

    Wenn bis hier was falsch sein sollte, dann verbessert mich.

    Wo liegt jetzt das Problem das Bild mit imageCreatefromJpeg zu verarbeiten?
    Ich erhalte nämlich immer diese Fehlermeldung:

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4896 bytes) in...


    Gruß
    trinity2253

  • #2
    1. ist die Rechnung falsch, die würde stimmen, wenn es ein 24Bit (truecolor) Bitmap wäre...

    2. ist dein Bild nicht das einzige was speicher verbraucht
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Hmmm...

      Stimmt, is klar...
      Bei mir ist es so, daß nach jedem Upload eines Bildes automatisch das Thumbnail generiert wird. Quasi heißt es, daß nur das eine Bild verarbeitet wird. Beim nächsten Upload halt das Nächste...

      Gruß
      trinity2253

      Kommentar


      • #4
        Problem gelöst?

        Kommentar


        • #5
          Indirekt...
          Habe die Upload-Größe der Bilder auf 1024*768 begrenzt... Ist aber nicht wirklich das, was ich will...

          Hast Du ne Lösung...

          Gruß
          trinity2253

          Kommentar


          • #6
            Der Happy hatte doch eine:
            2. ist dein Bild nicht das einzige was speicher verbraucht
            Dein Problem ist also immer noch "Allowed memory size of 8388608 bytes exhausted"? Dann kümmer dich mal um die Suche und denke über Happies Kommentar nach.

            Kommentar


            • #7
              Tja, auf einem anderen Hoster mit 32M Limit habe ich es mit zehn Bildern probiert und funktionierte.

              Warum müssen alle um den heißen Brei rumreden...


              Gruß
              trinity2253

              Kommentar


              • #8
                Du gibst dir die Antwort schon selber...

                Warum müssen alle um den heißen Brei rumreden...
                Wir reden nicht um den Brei herum. Aber

                1. lieferst du keinerlei Ansätze, wir haben also 0 Ahnung, was du machst. Kennen lediglich die Fehlermeldung.
                2. Wollen wir nur Hilfe zur Selbsthilfe liefern. mehr nicht. Ansonsten könnten wir direkt das Programmieren für dich übernehmen.

                Kommentar


                • #9
                  Das ist mir ja schon klar.
                  Ich könnte hier auch das Script oder zumindest einen Teil dessen veröffentlichen, aber wirklich helfen würde euch das wahrscheinlich auch nicht...
                  Schaut doch einfach mal rein...

                  PHP-Code:
                  <?php
                  clearstatcache
                  ();
                  for(
                  $x=0;$x<26;$x++){
                    
                  $userfile_name str_replace($bigletter[$x],$smallletter[$x],$userfile_name);
                  }
                  $userfile_name str_replace($signs,"_",$userfile_name);
                  $userfile_name str_replace($bad_ext,".txt",$userfile_name);

                  copy($userfile,$dir.$userfile_name);

                  if (!
                  is_uploaded_file ($userfile)){

                  echo 
                  "<font color=red face=verdana size=1>Die Datei <b><u>$userfile_name</u></b>
                  konnte nicht auf den Server geladen werden.</font><br>\n"
                  ;
                  }

                  }
                  // check whether file has been uploaded

                  if (is_uploaded_file ($userfile)){ 

                  echo 
                  "<font color=white face=verdana size=1>Die Datei
                  <b><u>
                  $userfile_name</u></b> wurde erfolgreich auf den Server geladen.</font><br>\n";

                  $thumb_width=120;
                  $thumb_height=120;
                  $max_width=640;
                  $max_height=480;
                  $functions=array("jpg"=>array("load"=>"imageCreateFromJpeg",
                  "save"=>"imageJpeg"),"png"=>array("load"=>"imageCreateFromPng",
                  "save"=>"imagePng"),"gif"=>array("load"=>"imageCreateFromGif""save"=>"imageGif"));
                  $functions["jpe"]=&$functions["jpg"];
                  $files=array();
                  clearstatcache();
                  define("imgDir""../../upload/fotos");
                  define("tbnDir""../../upload/thumbnails");
                  define("maxDir""../../upload/resized");



                  if ( 
                  $dir=opendir(imgDir) ) {
                      while ( (
                  $file readdir($dir))!==FALSE ) {
                          
                  // Nur wenn selbst kein Thumb ...
                          
                  $filename=(imgDir.( substr(imgDir, -1)=="/" "" "/" ).$file);
                          if ( 
                  substr($file04)!="thn_" && $size=@getimagesize($filename) ) {
                              
                              
                  $pathinfo=pathinfo($file);
                              
                  $files[]=array("name"=>$filename,
                                          
                  "width"=>$size[0], "height"=>$size[1],
                                          
                  "thumb"=>$thumb=(tbnDir.( substr(tbnDir, -1)=="/" ?
                                          
                  "" "/" )."thn_".$file));
                              
                  // Wenn kein Thumb vorhanden ... oder die Bilddatei neueren Datums ...
                                          // dann wird ein neuer Thumb erstellt.
                              
                              
                  if ( !file_exists($thumb) || filemtime($thumb)<filemtime($filename) ) {
                                  
                                  
                  // Original einlesen ... 
                                  
                  if ( $temp=@$functions[$pathinfo["extension"]]["load"]($filename) ) {
                                  
                                      
                                      
                  // Thumb-Groesse ermitteln ..
                                      
                  if ( $size[0]>$size[1] ) { // Landscape
                                      
                                          
                  $tn_height=$size[1]/$size[0]*($tn_width=$thumb_width);
                                      } else { 
                  // Quadrat || Portrait
                                          
                  $tn_width=$size[0]/$size[1]*($tn_height=$thumb_height);
                                      }

                                  } else {
                                      
                  $tn_width=$thumb_width$tn_height=$thumb_height;
                                      
                  $temp=imageCreate($tn_width$tn_height);
                                      
                  $bgcolor=imageColorAllocate($temp000);
                                      
                  $color=imageColorAllocate($temp0xFF0xFF0xFF);
                                      
                  imageString($temp322"THUMBNAIL CREATION    FAILED FOR
                                      
                  $filename"$color);
                                  }
                                  
                  // Thumb erstellen ... 
                                  
                  $tn=imageCreateTrueColor($tn_width$tn_height);
                                  
                  imageCopyResampled($tn$temp0000$tn_width,
                                  
                  $tn_height$size[0], $size[1]);

                                  
                  // und speichern ...
                                  
                  $functions[$pathinfo["extension"]]["save"]($tn$thumb);
                              }
                          }
                      }  
                  }



                  // Resizen 

                  if ( $dir=opendir(imgDir) ) {
                      while ( (
                  $file readdir($dir))!==FALSE ) {
                          
                  // Nur wenn selbst kein Thumb ...
                          
                  $filename_max=(imgDir.( substr(imgDir, -1)=="/" "" "/" ).$file);
                          if ( 
                  substr($file04)!="max_" && $size=@getimagesize($filename_max) ) {
                          
                              
                  $pathinfo=pathinfo($file);
                                          
                  $files_max[]=array("name"=>$filename_max,
                                          
                  "width"=>$size[0], "height"=>$size[1],
                                          
                  "max"=>$max=(maxDir.( substr(maxDir, -1)=="/" ?
                                          
                  "" "/" )."max_".$file));
                              
                              
                  // Wenn kein Thumb vorhanden ... oder die Bilddatei neueren Datums ...
                              // dann wird ein neuer Thumb erstellt.
                              
                  if ( !file_exists($max) || filemtime($max)<filemtime($filename_max) ) {
                                  
                                  
                  // Original einlesen ... 
                                  
                  if ( $temp=@$functions[$pathinfo["extension"]]["load"]($filename_max) ) {
                                  
                                  
                                      
                  // Thumb-Groesse ermitteln ..
                                      
                  if ( $size[0]>$size[1] ) { // Landscape
                                      
                                          
                  $tn_height=$size[1]/$size[0]*($tn_width=$max_width);
                                      } else { 
                  // Quadrat || Portrait
                                          
                  $tn_width=$size[0]/$size[1]*($tn_height=$max_height);
                                      }
                                   
                                  } else {
                                      
                  $tn_width=$max_width$tn_height=$max_height;
                                      
                  $temp=imageCreate($tn_width$tn_height);
                                      
                  $bgcolor=imageColorAllocate($temp000);
                                      
                  $color=imageColorAllocate($temp0xFF0xFF0xFF);
                                      
                  imageString($temp322"THUMBNAIL CREATION FAILED FOR
                                      
                  $filename"$color);
                                  }
                                  
                  // Thumb erstellen ... 
                                  
                                  
                  $tn=imageCreateTrueColor($tn_width$tn_height);
                              
                  imageCopyResampled($tn$temp0000$tn_width,
                                  
                  $tn_height$size[0], $size[1]);

                                  
                  // und speichern ...
                                  
                  $functions[$pathinfo["extension"]]["save"]($tn$max);
                              }
                          }
                      }  
                  }
                  Zuletzt geändert von trinity2253; 03.06.2005, 10:46.

                  Kommentar


                  • #10
                    Original geschrieben von trinity2253
                    Ich könnte hier auch das Script oder zumindest einen Teil dessen veröffentlichen, aber wirklich helfen würde euch das wahrscheinlich auch nicht...
                    nee, so will's vermutlich gar keiner überhaupt erst lesen.

                    bitte regeln zum posten von code lesen & umsetzen.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Das sollte jetzt reichen...

                      Kommentar


                      • #12
                        wenn du meinst, dass die hälfte des codes reicht... ich kann mit der linken hälfte leider nicht anfangen, drum werde ich auch nicht helfen.

                        Kommentar


                        • #13
                          Muß ich jetzt nicht verstehen...
                          Oder?

                          Warum kannst Du da nichts mit anfangen TobiaZ?

                          trinity2253

                          Kommentar


                          • #14
                            Hast du die Regeln gelesen? Was steht da zum Thema horizonal Scrollen
                            ?

                            Kommentar


                            • #15
                              So, jetzt ist es jawohl hoffentlich richtig...


                              trinity2253

                              Kommentar

                              Lädt...
                              X