Dawa www.shootmeagain.com | Bonjour à tous,
J'ai sur mon site web une page où l'utilisateur peut uploader une image et derrière tout ça un script est censé la redimensionner. Mais ce qui coince c'est que si l'image dépasse les 600ko environ, ça plante et je reçois un joli
Citation :
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 270001 bytes) in /mnt/sites/shootmeagain.com/web/thumb.php on line 64
|
Et voici le code :
Code :
- <?php
- function resize($file, $tofname, $maxWidth, $maxHeight, $path, $fonction, $disclaimer=0, $user=0){
-
- ini_set("memory_limit","32M" );
- //ini_set("max_execution_time","60" );
- $prod=$maxWidth*$maxHeight;
- //Créé une image à partir de $file
- $img = ImageCreateFromJpeg($file);
- //Dimensions de l'image
- $imgWidth = imagesx($img);
- $imgHeight = imagesy($img);
- //Facteur largeur/hauteur des dimensions max
- $whFact = $maxWidth/$maxHeight;
- //Facteur largeur/hauteur de l'original
- $imgWhFact = $imgWidth/$imgHeight;
- //fixe les dimensions du thumb
- if($imgWidth <= $maxWidth && $imgHeight <= $maxHeight)
- {
- $thumbWidth=$imgWidth;
- $thumbHeight=$imgHeight;
- }
- else
- {
- if($imgWidth > $imgHeight)
- {
- //Si largeur déterminante
- $thumbWidth = $maxWidth;
- $thumbHeight = $thumbWidth/$imgWhFact;
- if($thumbHeight>$maxHeight)
- {
- $redimfact=$thumbHeight/$maxHeight;
- $thumbHeight=$maxHeight;
- $thumbWidth=$thumbWidth/$redimfact;
- }
- }
- else
- {
- //Si hauteur déterminante
- $thumbHeight = $maxHeight;
- $thumbWidth = $thumbHeight*$imgWhFact;
- if($thumbWidth>$maxWidth)
- {
- $redimfact=$thumbWidth/$maxWidth;
- $thumbWidth=$maxWidth;
- $thumbHeight=$thumbHeight/$redimfact;
- }
- }
- }
- //Créé le thumb (image réduite)
- if($fonction=="photo" )
- {
- if($disclaimer==1)
- $thumbHeight2=$thumbHeight+35;
- else
- $thumbHeight2=$thumbHeight+20;
- }
- else
- {
- $thumbHeight2=$thumbHeight;
- }
- $imgThumb = ImageCreateTruecolor($thumbWidth, $thumbHeight2);
- $white = imagecolorallocate($imgThumb,255,255,255);
- $black = imagecolorallocate($imgThumb,0,0,0);
- imagefill($imgThumb,0,0,$white);
- //Insère l'image de base redimensionnée
- ImageCopyResampled($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight);
- //Nom du fichier thumb
- //list($titretof,$ext,$temp) = explode(".",$file);
- $imgThumbName = $path.$tofname;
- //Créé le fichier thumb
- // $fp = fopen($imgThumbName, "wb" );
- // fclose($fp);
- // fflush($fp);
- //Renvoie le thumb créé
- ImageJpeg($imgThumb, $imgThumbName,96);
- imagedestroy($imgThumb);
- imagedestroy($img);
- return $imgThumbName;
- }
|
La ligne 64, indiquée dans le code d'erreur, c'est donc simplement ceci :
Code :
- imagefill($imgThumb,0,0,$white);
|
Je ne vois pas comment un simple imagefill() peut être si gourmand ? Ou alors c'est les lignes précédentes qui surchargent le serveur ? Mais rien ne me semble exagéré...
Merci de votre aide !!! ---------------
SHOOT ME AGAIN WEBZINE
|