[RESOLU] [PHP] Génération de plusieurs vignettes

Génération de plusieurs vignettes [RESOLU] [PHP] - PHP - Programmation

Marsh Posté le 30-10-2008 à 17:11:44    

Bonjour, :hello:  
 
Voilà j'ai un script php qui traite l'upload d'une image, la déplace et crée 2 vignettes de tailles différentes. :)  
(Je ne m'occupe que d'images au format jpeg)
Seulement sur certaines images uploadées, la génération des 2 vignettes pose problème. :pfff:  
 
Quand je ne génère qu'une seule vignette, que ca soit la 'mini' ou la 'micro', je ne rencontre aucun problème, mais c'est l'empilage des 2 qui semble 'bugger'. :pt1cable:  
 
Lorsque le script lache, il s'arrête et plus rien ne s'exécute après, aucun 'echo', aucune ligne... :??:  
 
Je vous remercie de l'aide que vous m'apporterez. :)  
 
A bientôt.
 
Voici le script:

Code :
  1. /*Definition de la taille max des minatures. */
  2.  $width = 100;
  3.  $height = 100;
  4.  /*Definition de la taille max des micro. */
  5.  $width2 = 50;
  6.  $height2 = 50;
  7.  /*creation des miniatures. */
  8.  list($width_orig, $height_orig) =getimagesize($lien);
  9.  $ratio_orig = $width_orig/$height_orig;
  10.  if ($width/$height > $ratio_orig){
  11.  $width = $height*$ratio_orig;
  12.  }else{
  13.  $height = $width/$ratio_orig;
  14.  }
  15.  /*creation des micro. */
  16.  list($width_orig2, $height_orig2) =getimagesize($lien);
  17.  $ratio_orig2 = $width_orig2/$height_orig2;
  18.  if ($width2/$height2 > $ratio_orig2){
  19.  $width2 = $height2*$ratio_orig2;
  20.  }else{
  21.  $height2 = $width2/$ratio_orig2;
  22.  }
  23.  //dossier miniature
  24.  $miniature = '../../photos/billets/small/'.$fname;
  25.  //dossier micro
  26.  $micro = '../../photos/billets/micro/'.$fname;
  27.  /* Content type */
  28.  header('Content-type: image/jpeg');
  29.  $image_p= imagecreatetruecolor($width,$height);
  30.  $image= imagecreatefromjpeg($lien);
  31.  imagecopyresampled($image_p,$image,0,0,0,0,$width, $height, $width_orig, $height_orig);
  32.  //movance  de la miniature crée au dessus dans le repertoire miniature  
  33.  imagejpeg($image_p,$miniature,100);
  34.  $image_p2= imagecreatetruecolor($width2,$height2);
  35.  $image2= imagecreatefromjpeg($lien);
  36.  imagecopyresampled($image_p2,$image2,0,0,0,0,$width2, $height2, $width_orig2, $height_orig2);
  37.  //movance  de la miniature crée au dessus dans le repertoire micro
  38.  imagejpeg($image_p2,$micro,100);
  39.  header('Content-type: text/html');


Message édité par jocastt le 30-10-2008 à 17:57:23
Reply

Marsh Posté le 30-10-2008 à 17:11:44   

Reply

Marsh Posté le 30-10-2008 à 17:18:20    

aucun message d'erreur? Rien?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 17:18:59    

Nada :(

Reply

Marsh Posté le 30-10-2008 à 17:19:44    

L'affichage des messages d'erreurs est activé sur ta machine? Il se passe quoi, page blanche? C'est reproductible?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 17:21:06    

Peut-être un dépassement de la mémoire allouée à php? Tu as essayé en faisant un unset() des variables plus utiles avant création de la seconde vignette?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 17:24:20    

skeye a écrit :

L'affichage des messages d'erreurs est activé sur ta machine? Il se passe quoi, page blanche? C'est reproductible?


Oui oui les messages sont activés, je ne travaille pas en local.
Tous les scripts se situant au dessus de la 2eme créations d'image fonctionnent... Et après, plus rien.
 
Donc du coup la page n'est pas blanche, elle l'est a partir de la 2ème création d'image.
 
Edit:PS : Je vais tenter un unset mais la page n'est pas très lourde...


Message édité par jocastt le 30-10-2008 à 17:25:17
Reply

Marsh Posté le 30-10-2008 à 17:25:38    

euh, c'est moi où tu envoies des headers dans le vide, là?[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 17:25:47    

est ce que tu ne dépasse pas la taille mémoire limite ? quelle taille font les images a problème ?  
 

Reply

Marsh Posté le 30-10-2008 à 17:26:36    

flo850 a écrit :

est ce que tu ne dépasse pas la taille mémoire limite ? quelle taille font les images a problème ?


merci de reposer la question, on ne sait jamais.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 17:29:47    

lol, euh alors les images à problèmes ne dépassent pas les 500k en poids, et ne dépassent pas les 800px en taille.
 
Je vient de tester un unset sur chaque variable utilisée pour la génération de la première image... Rien de changé.

Reply

Marsh Posté le 30-10-2008 à 17:29:47   

Reply

Marsh Posté le 30-10-2008 à 17:31:09    

flo850 a écrit :

est ce que tu ne dépasse pas la taille mémoire limite ? quelle taille font les images a problème ?  
 


Logiquement PHP sort un message d'erreur par rapport au dépassement de la memoire limite allouée non ?
 
Sinon pour les headers, j'en déclare deux, des content type. Un juste avant la création des imagesJpeg, et l'autre juste après pour la saisi du reste du code.

Message cité 1 fois
Message édité par jocastt le 30-10-2008 à 17:33:32
Reply

Marsh Posté le 30-10-2008 à 17:32:35    

skeye a écrit :


merci de reposer la question, on ne sait jamais.[:petrus75]


j'ai mis un peu de temsp a taper le message  

jocastt a écrit :

lol, euh alors les images à problèmes ne dépassent pas les 500k en poids, et ne dépassent pas les 800px en taille.
 
Je vient de tester un unset sur chaque variable utilisée pour la génération de la première image... Rien de changé.


 
tu es sur d'avoir les droits sur le dossier micro ?  

Reply

Marsh Posté le 30-10-2008 à 17:34:27    

est ce que $fname est bien initialisée ?
avant tes 'imagejpeg' fait un file_exists() sur $miniature poru vérifier

Reply

Marsh Posté le 30-10-2008 à 17:35:05    

flo850 a écrit :


 
tu es sur d'avoir les droits sur le dossier micro ?  


 
Oui vu que, lorsque je mets en commentaire toute la partie du script concernant la génération de la première image, tout fonctionne.

Reply

Marsh Posté le 30-10-2008 à 17:37:15    

PunkRod a écrit :

est ce que $fname est bien initialisée ?
avant tes 'imagejpeg' fait un file_exists() sur $miniature poru vérifier


 
Le $fname est bien initialisé vu que la création de la première vignette ne pose pas problème.
Je vais tester un file_exists sur la premiere vignette générée.

EDIT:Le file_exists($miniature) fonctionne, ma premiere miniature est bien sur le serveur.


Message édité par jocastt le 30-10-2008 à 17:39:36
Reply

Marsh Posté le 30-10-2008 à 17:41:14    

imagejpeg renvoie aussi true/false selon le résultat, tu peux aussi tester le résultat de chacune...

Reply

Marsh Posté le 30-10-2008 à 17:42:08    

Code :
  1. $width_orig2, $height_orig2);


?? y a pas de '2' en trop ?

 

enfin les dimensions originales si j'ai bien compris elles bougent pas, je vois pas l'intérêt de les avoir 2 x
edit : ah ben non tu dupliques tout...

 

ma foi :o


Message édité par PunkRod le 30-10-2008 à 17:44:15
Reply

Marsh Posté le 30-10-2008 à 17:44:54    

PunkRod a écrit :

imagejpeg renvoie aussi true/false selon le résultat, tu peux aussi tester le résultat de chacune...


En effet, je ne savais pas.
Pour la réponse : ca ne marche que sur la premiere vignette générée.
 
Par conséquent si je met la génération n°2 de vignette en premier, celle ci fonctionne et la n°1 ne fonctionne plus car elle se trouve en second.


Message édité par jocastt le 30-10-2008 à 17:47:14
Reply

Marsh Posté le 30-10-2008 à 17:50:15    

jocastt a écrit :


Sinon pour les headers, j'en déclare deux, des content type


soit j'ai rien compris à ce que fait ton code, soit ça ne sert absolument à rien - voire ça crée des problèmes.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 17:52:01    

skeye a écrit :


soit j'ai rien compris à ce que fait ton code, soit ça ne sert absolument à rien - voire ça crée des problèmes.


 
My fault, tu m'as donné la solution plus haut mais je ne l'avais pas appliqué aux bonnes variables.
Le unset semble avoir réglé mon problème.
Je fais un unset de $image_p et de $image et ca fonctionne.
 
Apres quelques tests je peux dire que ce script est stable grâce à toi.
Merci beaucoup pour cette petite astuce du unset();
 :jap:


Message édité par jocastt le 30-10-2008 à 17:56:24
Reply

Marsh Posté le 30-10-2008 à 18:15:19    

probablement un soucis de conso mémoire, alors...mais tu devrais avoir un message, bizarre...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-10-2008 à 19:10:20    

skeye a écrit :

probablement un soucis de conso mémoire, alors...mais tu devrais avoir un message, bizarre...


Tu connais la ligne sur le php.ini qui gère l'affichage des messages d'erreurs ? (même si pour ce cas là je ne pourrais pas le modifier..).
Pske bon les parse error et compagnie s'affichent bien pourtant :s

Reply

Marsh Posté le 31-10-2008 à 07:29:20    

error_reporting. Mais si c'est la génération d'une image et que derrière tu envoies le résultat de ton script précédé d'un header content-type, le message sera probablement dans l'image qui ne s'affiche pas.[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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