2009-11-12 6 views
0

J'ai un script qui crée une vignette à partir d'une image téléchargée. cela fonctionne bien avec jpgs, mais me donne une erreurPHp - Erreur de mémoire lors du redimensionnement d'une image PNG

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 26250000 bytes)

lorsque je télécharge une image png.

Le script est:

//create thumbnail; $modwidth and height are calculated in another part of the script 
//$original is the path to the full sized image 

$tn = imagecreatetruecolor($modwidth, $modheight); 
switch (strrchr($new_image_name,'.')) { 
    case ".jpg": 
    $image = imagecreatefromjpeg($original); 
    break; 
    case ".jpeg": 
    $image = imagecreatefromjpeg($original); 
    break; 
    case ".png": 
    $image = imagecreatefrompng($original); 
    break; 
    case ".gif": 
    $image = imagecreatefromgif($original); 
    break; 
} 
imagecopyresampled($tn, $image, 0, 0, $x_pos, $y_pos, $modwidth, $modheight, $width, $height); 
switch (strrchr($new_image_name,'.')) { 
    case ".jpg": 
    imagejpeg($tn, $target_path, 100); 
    break; 
    case ".jpeg": 
    imagejpeg($tn, $target_path, 100); 
    break; 
    case ".png": 
    imagepng($tn, $target_path, 0); 
    break; 
    case ".gif": 
    imagegif($tn, $target_path); 
    break; 
} 

Comme je l'ai dit, il fonctionne parfaitement avec JPGs et aussi avec GIFs. Cette erreur de mémoire apparaît uniquement avec les fichiers PNG, et j'ai seulement utilisé une image de 1,2 Mo.

Comment puis-je résoudre ce problème? grâce Patrick

Répondre

2

Utilisez ini_set('memory_limit', '256M'); avant script.

+0

Merci César, ça a marché. Dois-je réduire cette limite de mémoire après le script? (en général, y a-t-il un problème pour définir une limite de mémoire très élevée?) – patrick

+0

Pas de problème, ceci ne définit la mémoire que pour ce script, si vous avez besoin de tous les scripts à modifier dans php.ini – Cesar

+0

Pour clarifier: votre image est assez grand, si vous téléchargez une image plus grande, votre script échouera à nouveau. Essayez simplement d'avoir une limite sur la taille de l'image envoyée au script. –

1

Vous devez augmenter memory_limit mise en php.ini à quelque chose comme ça

memory_limit = 128M 
Questions connexes