wat gaat er fout met resizen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Albert Dijkstra

Albert Dijkstra

15/09/2007 13:55:00
Quote Anchor link
Hallo iedereen,

Ik heb diverse uploadscripts gebrobeerd, zowel van deze site als van andere sites...

Het uploaden opzich gaat prima, maar dan het resizen...
ik krijg dan de foutmelding:

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 9088 bytes) in .... enz.
 
PHP hulp

PHP hulp

02/05/2024 10:32:43
 
Kees de braak

Kees de braak

15/09/2007 14:00:00
Quote Anchor link
scriptje?
 
Crispijn -

Crispijn -

15/09/2007 14:02:00
Quote Anchor link
Wat voor giga bestand wil je uploaden? Begrijp ik goed dat het hier om een bestand gaat van 20971520 dus even simpel gezegd 20mb? Vaak hebben hosting bedrijven een max gesteld aan de grootte van de te uploaden bestanden. Heeft het misschien hier iets mee te maken?

Succes!
 
Albert Dijkstra

Albert Dijkstra

15/09/2007 14:04:00
Quote Anchor link
Bestand is ong. 1 MB


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
$map
        = "upload/";        // dir waar de foto's staan
$map_large    = "pic_large/";        // dir waar de grote foto's komen
$nwidth     = "640";            // nieuwe breedte
$nheight     = "480";            // nieuwe hoogte
$maxwidth     = "8000";            // maximale breedte
$maxheight    = "6000";            // maximale hoogte
$name         = "pic_";            // prefix voor afbeeldingen

$handle=opendir("$map");

//uitlezen van de dir
while (false!==($naam = readdir($handle))) {

       if ($naam != "." && $naam != ".." && $naam !== "Thumbs.db") {
     $file = $map . $naam;
     list($width, $height) = getimagesize("$file");  

    // controle dat niet perongeluk andere foto's ook worden gecropt
     if ($width >= $maxwidth || $height >= $maxheight){
         echo "<a href=$file target='blank'>Sorry <b>" . $naam .
         "\n<b> is te groot " . $height ." X " . $width. "</a><br>\n
             "
;

      }
else{
        $i = 0;
     while (file_exists($map_large . $name . $i . ".jpg")) {
       $i = $i + 1;
       }


       $name = $name . $i;

     //opnieuw aanmaken en opslaan over het orgineel heen
     $pic        =    ImageCreateTrueColor($nwidth, $nheight);
     $cpyImage     =     ImageCreateFromJPEG($file);

        imagecopyresampled
        ($pic,$cpyImage,0,0,0,0, $nwidth,$nheight,$width, $height);
        $nw_file = $map_large . $name . ".jpg";
        imagejpeg($pic,$nw_file);
         }
    }
}

// en de dir weer sluiten voor de netheid
closedir($handle);
// bevestiging weergeven
//echo ("Afbeeldingen verkleind naar $nwidth x $nheight <a href=\"resize_thumb.php\"><br>Ga verder</a>");
// verwijderen van origineel

?>
 
Bo az

Bo az

15/09/2007 14:27:00
Quote Anchor link
Je geheugen loopt vol, er mag maximaal 20mB gebruikt worden.

Dit komt waarschijnlijk omdat er in die directory meerdere bestanden staan, die je wil resizen. Deze bestanden worden ingeladen in het geheugen door php, maar je geeft het geheugen nergens vrij. Nu wordt het geheugen pas vrij gegeven als de garbage collector langs komt en dat is pas na het uitvoeren.

Simpel gezegd, je zal het geheugen moeten gaan vrijgeven door gebruik te maken van imagedestroy().
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.