Limitations de la librairie GD ?

Limitations de la librairie GD ? - PHP - Programmation

Marsh Posté le 06-09-2008 à 19:03:34    

Bonjour tout le monde.
Je rencontre une petite difficulté depuis pas mal de temps. Je n'ai jamais réussi à la résoudre. Aujourd'hui je me suis dit : Allez Tony, demande de l'aide !
C'est avec espoir donc que je m'en remet à vous tous ^^.
 
Alors voilà, je fais mon petit album photo en ligne. Je met des images, et mes amis peuvent laisser des commentaires, tel un "blog".  
Ces commentaires peuvent être "imagés", c'est à dire que chaque personne peut, en plus d'écrire du texte, cliquer sur le fameux bouton parcourir, sélectionner une image de 1Mo maxi (contrôle effectué sur la page de traitement du formulaire), et voilà ! Pour ces commentaires, je me suis pas foulé : au lieu de faire une liaison FTP, je passe en HTTP, truc basique quoi. On en vient au problème :
 
Quand bien même l'image ne fait que 150Ko (admettons), sur 4 000 000 de pixels (2000x2000), quand on upload le commentaire, la base de donnée se remplie bien, mais l'image ne s'upload pas.
GD intervient dans la page de traitement pour créer une miniature, puis ensuite le script copie les photos dans le répertoire qui va bien.
Pour des tailles "normales" comme 1200x789 pixels, c'est OK.
 
Ma question donc : n'y aurait-il pas une sorte de bog ou limitation de la librairie GD quand on essaye de lui faire traiter de trop nombreux pixels ?

Reply

Marsh Posté le 06-09-2008 à 19:03:34   

Reply

Marsh Posté le 06-09-2008 à 19:18:25    

Bon, j'ai regardé ce probleme de plus près, j'ai du temps, il pleut donc...
Voici l'erreur :
 
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 13332 bytes) in /homepages/17/d213990876/htdocs/monmien/site/scripts/fonctions_php/resize_images.php on line 11
 
A priori, le serveur aime pas que le prenne trop de mémoire à traiter trop de pixels.
Voici mon code de traitement :
 

Code :
  1. $id_rep = @opendir ($repertoire);
  2.   $size = @getimagesize ($repertoire."/".$fichier);
  3.   if ($size[1]==0){$size[1]=1;}//eviter les messages affichant l'erreur quand le fichier n'est pas transmit
  4.   $rapport = $size[0]/$size[1];
  5.   $height = $largeur / $rapport;
  6.   $source_image = imagecreatefromjpeg ($repertoire."/".$fichier);
  7.   $dest_image = imagecreatetruecolor ($largeur, $height);
  8.   imagecopyresampled ($dest_image, $source_image, 0, 0, 0, 0, $largeur, $height, $size[0], $size[1]);
  9.   imagejpeg ($dest_image, $repertoire."/_".$fichier, 75);
  10.   imagedestroy ($source_image);
  11.   imagedestroy ($dest_image);


 
Ca viendrait du imagecreatefromjpeg ... Je cherche et vous tiens informé.

Reply

Marsh Posté le 07-09-2008 à 10:15:39    

Dans ton php.ini, as-tu modifié la directive memory_limit ?

Code :
  1. memory_limit = 128M      ; Maximum amount of memory a script may consume (128MB)


 
Car tu sembles être limité à 8M...


Message édité par CyberDenix le 07-09-2008 à 10:16:57

---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed