[PHP] memory exhausted bij imagecreatefromjpeg

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ppl,

Ik heb de volgende functie om plaatjes te verkleinen.
PHP:
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
50
51
52
53
54
55
function createThumbnail($data, $naam)
{
        //Check grootte omdat je anders een FATAL ERROR krijgt.
        //'Allowed memory size of 8388608 bytes exhausted' zoiets dus.
        if ($data['size'] > 1024000)
        {
            return false;
            exit;
        }
        else{
            //origineel inladen en formaat bepalen
            list($width,$height, $kind) = getimagesize($data['tmp_name']);
            if($kind != 2)
            {
                return false;
                exit;
            }
            $origineel = imagecreatefromjpeg($data['tmp_name']);
            $max_width = 500;
            
                if ($width > $max_width)
                {
                    $dstW = $max_width;
                    // Bereken thumbnail maten
                    $verhouding = $width / $height;
                    $dstH = round($dstW / $verhouding);
                    $main = imagecreatetruecolor($dstW, $dstH);
                    imagecopyresampled($main, $origineel, 0, 0, 0, 0, $dstW, $dstH, $width, $height);
                    
                    //main wegschrijven
                    imagejpeg($main,'../images/main/'.$naam);
                }else
                {
                    //origineel wegschrijven
                    imagejpeg($origineel,'../images/main/'.$naam);
                }
            
            $dstW = 60;
            // Bereken thumbnail maten
            $verhouding = $width / $height;
            $dstH = round($dstW / $verhouding);
            $thumb = imagecreatetruecolor($dstW, $dstH);
            imagecopyresampled($thumb, $origineel, 0, 0, 0, 0, $dstW, $dstH, $width, $height);
            
            //thumb wegschrijven
            imagejpeg($thumb,'../images/thumb/'.$naam);
            
            //bestand verwijderen
            @imagedestroy($origineel);
            @imagedestroy($thumb);
            @imagedestroy($main);
        }
        
        return true;
}


Opzich gaat dit allemaal goed alleen wanneer ik bestanden upload die groter zijn dan een halve mb dan krijg ik die foutmelding.
Hier loopt ie op stuk:
PHP:
1
$origineel = imagecreatefromjpeg($data['tmp_name']);

Ik heb gezocht op GoT en google maar kwam niet echt tot een goed antwoord.
Heb de memory geset op 16mb:
PHP:
1
ini_set('memory_limit',16777216);

heb ook ini_set('memory_limit',16000000); geprobeerd.

met memory_get_usage bereik ik niet zoveel omdat ie al snel crashed..

Heeft iemand hetzelfe meegemaakt?

[ Voor 4% gewijzigd door Verwijderd op 06-07-2004 16:45 . Reden: typo ]


Acties:
  • 0 Henk 'm!

Verwijderd

Wellicht is dit een interessante link:

Memory Exhausted
:X

[ Voor 6% gewijzigd door Verwijderd op 06-07-2004 16:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Weet je zeker dat je ini_set wel doorgevoerd wordt? Probeer eens:

PHP:
1
2
3
if (!ini_set('memory_limit', '16M')) {
  echo "Can't change the memlimit";
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 06 juli 2004 @ 16:50:
Weet je zeker dat je ini_set wel doorgevoerd wordt? Probeer eens:

PHP:
1
2
3
if (!ini_set('memory_limit', '16M')) {
  echo "Can't change the memlimit";
}
Oke, dit is denk ik het probleem dan. Hij kan 'm niet setten. Is er ook een workaround voor behalve de check gebruiken of het bestand groter of kleiner is dan een halve MB?

[ Voor 7% gewijzigd door Verwijderd op 06-07-2004 16:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

als je zelf de beheerder van de server bent, of je bent vriendjes met de beheerder van de server dan kun je de instelling ook (laten) veranderen in 'php.ini' ... Dat werkt in ieder geval.