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
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
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
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. –