Bonjour,
Je teste mon script de génération de miniatures, et je rencontre de gros
problèmes de consommation mémoire.
Mon hébergeur est Free, et la limite de consommation mémoire est fixée à 32M
chez cet hébergeur.
A chaque fois que j'essaie de générer une miniature avec le code ci-dessous,
j'ai systématiquement une erreur de type "Fatal error: Allowed memory size
of 33554432 bytes exhausted".
L'erreur se produit au niveau de l'appel à la fonction
imagecreatefromjpeg().
Mes images ont une taille variable entre 2 et 3,5Mo. Vu que la limite est
fixée à 32Mo, je ne comprends pas pourquoi j'ai l'erreur. Est ce que mon
script comporte une erreur ? Est ce que mon appel a imagecreatefromjpeg()
est correct ?
J'ai également essayé de convertir l'image jpeg en wbmp en utilisant
jpeg2wbmp() en redimensionnant à la volée, mais l'erreur se produit quand
même (cette fois au niveau de l'appel à jpeg2wbmp()).
Existe t-il une solution de contournement pour mon problème (plus de 32M de
mémoire utilisé pour une image de 2M me parait quand même beaucoup) ?
Merci d'avance pour vos réponses.
///////////////////////////////////////////////////////////////////////////
function thumbnailize($img)
{
$thumb="";
if (file_exists($img))
{
$imgInfo = getimagesize($img);
$imgWidth=$imgInfo[0];
$imgHeight=$imgInfo[1];
$imgType=$imgInfo['mime'];
// $imgInfo[2] -> image type 2 = JPG,JPEG
if ($imgInfo[2] == 2)
{
// check image format is jpeg
$imgSrc=imagecreatefromjpeg($img);
// source image must be larger than destination image
if ( ($imgWidth > THUMB_WIDTH) || ($imgHeight >
THUMB_HEIGHT) )
{
// if width larger than height
if ($imgHeight <= $imgWidth)
{
$ratio = THUMB_WIDTH / $imgWidth;
}
else
{
$ratio = THUMB_HEIGHT / $imgHeight;
}
}
else
{
$ratio = 1; // same as original
}
$thumb = imagecreatetruecolor(round($imgWidth * $ratio),
round($imgHeight*$ratio));
imagecopyresampled($thumb
$imgSrc,0,0,0,0,round($imgWidth*$ratio),round($imgHeight*$ratio),$imgWidth
$imgHeight);
imagedestroy($imgSrc);
// Send image file to browser
imageinterlace($thumb);
header('Content-Type: ' . $imgType);
imagejpeg($thumb, NULL, THUMB_QUALITY);
imagedestroy($imgLow);
imagedestroy($thumb);
}
}
}
///////////////////////////////////////////////////////////////////////////

