Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1221 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1806483
jocastt
Posté le 30-10-2008 à 17:11:44  profilanswer
 

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
mood
Publicité
Posté le 30-10-2008 à 17:11:44  profilanswer
 

n°1806488
skeye
Posté le 30-10-2008 à 17:18:20  profilanswer
 

aucun message d'erreur? Rien?


---------------
Can't buy what I want because it's free -
n°1806490
jocastt
Posté le 30-10-2008 à 17:18:59  profilanswer
 

Nada :(

n°1806491
skeye
Posté le 30-10-2008 à 17:19:44  profilanswer
 

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 -
n°1806492
skeye
Posté le 30-10-2008 à 17:21:06  profilanswer
 

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 -
n°1806497
jocastt
Posté le 30-10-2008 à 17:24:20  profilanswer
 

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
n°1806502
skeye
Posté le 30-10-2008 à 17:25:38  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°1806505
flo850
moi je
Posté le 30-10-2008 à 17:25:47  profilanswer
 

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

n°1806507
skeye
Posté le 30-10-2008 à 17:26:36  profilanswer
 

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 -
n°1806515
jocastt
Posté le 30-10-2008 à 17:29:47  profilanswer
 

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

mood
Publicité
Posté le 30-10-2008 à 17:29:47  profilanswer
 

n°1806516
jocastt
Posté le 30-10-2008 à 17:31:09  profilanswer
 

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
n°1806519
flo850
moi je
Posté le 30-10-2008 à 17:32:35  profilanswer
 

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 ?  

n°1806522
PunkRod
Digital Mohawk
Posté le 30-10-2008 à 17:34:27  profilanswer
 

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

n°1806523
jocastt
Posté le 30-10-2008 à 17:35:05  profilanswer
 

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.

n°1806526
jocastt
Posté le 30-10-2008 à 17:37:15  profilanswer
 

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
n°1806529
PunkRod
Digital Mohawk
Posté le 30-10-2008 à 17:41:14  profilanswer
 

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

n°1806530
PunkRod
Digital Mohawk
Posté le 30-10-2008 à 17:42:08  profilanswer
 

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
n°1806532
jocastt
Posté le 30-10-2008 à 17:44:54  profilanswer
 

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
n°1806534
skeye
Posté le 30-10-2008 à 17:50:15  profilanswer
 

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 -
n°1806538
jocastt
Posté le 30-10-2008 à 17:52:01  profilanswer
 

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
n°1806557
skeye
Posté le 30-10-2008 à 18:15:19  profilanswer
 

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 -
n°1806574
jocastt
Posté le 30-10-2008 à 19:10:20  profilanswer
 

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

n°1806724
skeye
Posté le 31-10-2008 à 07:29:20  profilanswer
 

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 -
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[Dreamweaver] Centrage de calques [résolu][Résolu] Menu et sous menu-dynamique
[résolu] Composant loader[resolu]Verification 'variable || contenu champ table mysql'
[Résolu]Débordement d'image dans pdf générer par FOP[résolu] Problème d'accent avec FOP
[Resolu] Pbm de "récupération de paramètres" avec Ajax.Request[résolu] petit script en python
Plus de sujets relatifs à : [RESOLU] [PHP] Génération de plusieurs vignettes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR