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

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu]image dynamique en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]image dynamique en php

n°1674951
jenny50
Posté le 22-01-2008 à 12:11:48  profilanswer
 

Bonjour à tous,  
 
Je suis sur un Intranet. J'ai une table SQL du personnel. Je souhaite afficher la photo du personnel à côté de leur nom. Tout cela dans un fichier PDF.
J'utilise FPDF. POur afficher une image on utilise la fonction Image('logo.jpg').
 
Le problème est que mon image est générée par un fichier php car l'info est dans la base de données. si je replace "logo.jpg" par "photo.php?cle=1" cela m'affiche une erreur que je comprends.
 
J'ai cherché, je crois que la solution est d'enregistrer l'image générée sur mon serveur. Mais comment je dois procéder? Je ne sais pas comment utiliser mon fichier "photo.php" pour qu'à la place d'afficher une image, il me l'enregistre dans un repertoire précis (pour que je puisse l'appeler dans mon php après).
 
Merci par avance
Jenny
 
PS : pour afficher la photo dans une page normale -> img src="photo.php?cle=1"


Message édité par jenny50 le 23-01-2008 à 13:18:45
mood
Publicité
Posté le 22-01-2008 à 12:11:48  profilanswer
 

n°1675001
leflos5
On est ou on est pas :)
Posté le 22-01-2008 à 13:36:40  profilanswer
 

En effet est ce que les photos changent souvent :??: Et donc est ce que ça vaut le coup de stocker ça en base :??:
 
Sinon, il te suffit de récupérer l'image et de fournir l'image, la vraie :spamafote: T'as tout un tas de fonctions pour ça ici

n°1675022
jenny50
Posté le 22-01-2008 à 13:54:26  profilanswer
 

merci pour cette réponse. Et quand tu utilises la fonction :  
imagepng($image);
comme je le fais, pourrais-tu m'indiquer où se trouve l'image créé pour que je puisse la désigné pour le PDF?

n°1675074
skeye
Posté le 22-01-2008 à 14:31:18  profilanswer
 

jenny50 a écrit :

merci pour cette réponse. Et quand tu utilises la fonction :  
imagepng($image);
comme je le fais, pourrais-tu m'indiquer où se trouve l'image créé pour que je puisse la désigné pour le PDF?


tu peux utiliser le seconde paramètre de cette fonction pour enregistrer l'image à l'endroit de ton choix...par exemple un répertoire temporaire le temps de générer ton pdf...;)


---------------
Can't buy what I want because it's free -
n°1675132
leflos5
On est ou on est pas :)
Posté le 22-01-2008 à 15:42:01  profilanswer
 

Ou carrément ne pas l'enregistrer et balancer directement vu que tu utilises fpdf donc du php directement :spamafote:

n°1675136
skeye
Posté le 22-01-2008 à 15:44:30  profilanswer
 

leflos5 a écrit :

Ou carrément ne pas l'enregistrer et balancer directement vu que tu utilises fpdf donc du php directement :spamafote:


oui, aussi...m'enfin je sais pas ce qu'attend fpdf moi hein, et je voulais pas compliquer le truc.[:joce]


---------------
Can't buy what I want because it's free -
n°1675223
CyberDenix
Posté le 22-01-2008 à 17:10:42  profilanswer
 

leflos5 a écrit :

Ou carrément ne pas l'enregistrer et balancer directement vu que tu utilises fpdf donc du php directement :spamafote:


skeye a écrit :

oui, aussi...m'enfin je sais pas ce qu'attend fpdf moi hein, et je voulais pas compliquer le truc.[:joce]


 
Je te propose donc au préalable de lire la photo de tous les membres du personnel (fopen...etc) et d'enregistrer ce flux dans ta bd.
Dans ta table utilisateur tu auras par exemple : cle, nom, photo.
 
Puis tu crée un fichier getphoto.php qui prend la clé de la personne en paramètre (par exemple getphoto.php?cle=1), qui sélectionne dans la BD le flux d'image correspondant à cette personne, et qui l'écrit avec le bon header et tout le tralala pour indiquer que c'est une image.
 
Puis dans ton générateur de pdf tu fais un truc du genre (je me souviens plus du nom des méthodes) :
$pdf->drawimage('getphoto.php?cle='.$ma_cle_utilisateur)
 
:)


---------------
Directeur Technique (CTO)
n°1675238
omega2
Posté le 22-01-2008 à 17:21:23  profilanswer
 

CyberDenix > Et là, ça ne marche pas par ce qu'en lisant un fichier local, on exécute pas le code php qu'il contient.
 
jenny50 > Va faire un tour sur le site de fpdf ( www.fpdf.org ) et récupère toi le script 45 "Import d'image en mémoire". Ensuite tu fait un include sur le fichier contenant ce script et tu crés l'objet comme indiqué dans l'exemple (ton "$pdf = new fpdf()" devient "$pdf=new MEM_IMAGE();" ) . Ca te permettra d'utiliser des images contenu dans une variable php (et donc celle récupéré directement dans la base de donnée)

n°1675286
CyberDenix
Posté le 22-01-2008 à 18:12:31  profilanswer
 

omega2 a écrit :

CyberDenix > Et là, ça ne marche pas par ce qu'en lisant un fichier local, on exécute pas le code php qu'il contient.


 
J'ai parlé trop vite... merci de me détromper !  :whistle:


Message édité par CyberDenix le 22-01-2008 à 18:13:43

---------------
Directeur Technique (CTO)
n°1675473
jenny50
Posté le 23-01-2008 à 09:14:30  profilanswer
 

Omega1 : je te remercie pour le conseil du script 45 sur FPDF, mais je ne le comprends pas trop.  
 
Je reprends :  
dans ma base de données j'ai bien une table nom, prenom, photo (où photo est de type 'lo' pgsql)
 
Voici le lien que j'utilise quand j'affiche ma photo habituellement :  

Code :
  1. <img src="../admin/photo_uti.php?oid='.$r->pers_photo.'&larg=70">


 
Dans photo_uti.php j'ai ça :  

Code :
  1. header ("Content-type: image/png" );
  2. $image = imagecreate($new_larg,$new_larg);
  3. $orange = imagecolorallocate($image, 255, 128, 0); // Le fond est orange (car c'est la première couleur)
  4. $bleu = imagecolorallocate($image, 0, 0, 255);
  5. $bleuclair = imagecolorallocate($image, 156, 227, 254);
  6. $noir = imagecolorallocate($image, 0, 0, 0);
  7. $blanc = imagecolorallocate($image, 255, 255, 255);
  8. imagecolortransparent($image, $orange); // On rend le fond orange transparent
  9. imagepng($image);


 
Comment je peux faire pour afficher ma photo dans le fichier php suivant :  

Code :
  1. $pdf=new FPDF();
  2. $pdf->AddPage();
  3. $pdf->SetFont('Arial','B',12);
  4. //filiale
  5. $pdf->Cell(20,10,'FILIALE : ',0,0,'L',0,'');
  6. $pdf->SetFont('Arial','',12);
  7. $pdf->Cell(40,10,strtoupper(trim($r->fil_lib)),0,0,'L',0,'');
  8. //nom agent
  9. $pdf->SetFont('Arial','B',12);
  10. $pdf->Cell(130,10,strtoupper(trim($r->ag_nom)),0,1,'R',0,'');
  11. $pdf->Output();


 
Merci beaucoup de m'aider, ça fait 2 jours que je suis dessus et je galère vraiment.

mood
Publicité
Posté le 23-01-2008 à 09:14:30  profilanswer
 

n°1675511
omega2
Posté le 23-01-2008 à 10:35:12  profilanswer
 

Vu ton fichier photo_uti.php, ce que tu essaye de faire ressemble énormément à l'exemple du script 45.
 
En partant de ton script de création de pdf :

  • A la place du "$pdf=new FPDF();", tu mets les deux lignes "require('mem_image.php');" et "$pdf=new MEM_IMAGE();". (comme au début de l'exemple du script 45)
  • A l'endroit que tu veux (tant que c'est avant le "$pdf->Output();" ) tu mets le code de création de ton image (sans le header et sans le "imagepng($image);" )
  • Entre ce code là et le "$pdf->Output();" tu rajoutes les deux lignes de l'exemple du script 45 qui sont précédé du commentaire "//Affichage" en les adaptant à ton code (mettre le bon nom de variable et les bonnes dimensions).


En faisant ça, t'auras ton image dans ton fichier pdf.

n°1675522
jenny50
Posté le 23-01-2008 à 10:53:30  profilanswer
 

Je te remercie énormément OMEGA2. Tu expliques bien et ça fonctionne bien.

n°1675529
jenny50
Posté le 23-01-2008 à 11:04:17  profilanswer
 

OMEGA2 : je voudrais maintenant utiliser le script 70 de FPDF, toujours sur le même document. J'ai procédé de la même manière à savoir :

  • A la place du "$pdf=MEM_IMAGE();", j'ai mis les deux lignes "require('html_table.php');" et "$pdf=new PDF_HTML_Table();". (comme au début de l'exemple du script 70)  
  • A l'endroit que je veux (tant que c'est avant le "$pdf->Output();" ) j'ai mis ce code :  
Code :
  1. $htmlTable.='<table align="center" width="100%" cellpadding="0" cellspacing="0" border="0">';
  2. $htmlTable.=' <tr>';
  3. $htmlTable.='  <td class="fichag_gauche" width="30%"><b>FILIALE</b> : '.$r->fil_lib.'<br><b>AFFAIRE</b> : '.$r->conc_lib.'<br><b>CANTON</b> : '.$r->cant_lib.'<br><b>VENDEUR VN</b> : '.substr($r->pers_prenom,0,1).'. '.$r->pers_nom.'<br><b>VENDEUR PR</b> : '.substr($r_vpr->pers_prenom,0,1).'. '.$r_vpr->pers_nom.'<br></td>';


  • Entre ce code là et le "$pdf->Output();" j'ai rajouté les deux lignes de l'exemple du script 70 :  
Code :
  1. $pdf->SetFont('Arial','',10);
  2. $pdf->WriteHTML("$htmlTable" );


 
Et tout ça ne fonctionne pas!!!
Ah si c'était si simple !!!
 
Merci de ton aide

n°1675550
omega2
Posté le 23-01-2008 à 11:43:33  profilanswer
 

Les scripts sont fait pour ne pas dépendre de la présence d'un autre script mais uniquement de fpdf : ils étendent tous la classe FPDF en lui rajoutant des éléments. Si tu regardes les sources des différents scripts tu auras une ligne qui commence par "class" et qui finis par "extends FPDF". C'est cette ligne là qui indique cet héritage de FPDF par les classes des scripts.
 
Si tu veux utiliser deux scripts pour un même pdf, alors il faudra, dans l'un des deux, remplacer le "FPDF" de cette ligne là par le nom de la classe de l'autre script (par exemple "extends FPDF" deviendrait "extends MEM_IMAGE" dans le script 70) Il faut aussi rajouter un require (par exemple "require('mem_image.php');" ) dans le fichier que tu modifies pour être sur de charger tout ce qui sera nécessaire à cette version modifié sans devoir le faire dans ton source à toi.
En faisant ainsi tu obtiendras une classe qui contiendra à la fois ce qu'il faut pour pour mettre des images dans le fichier (capacité obtenu par héritage de la classe du script 70) et ce qu'il faut pour créer une table à partir d'une table html (capacité propre à la classe du script 70).
 
A noter que si tu veux utiliser également ce qui est dans d'autres scripts, il faudra continuer à créer, de la même manière, des dépendances entre les classes des différents scripts.

n°1675553
jenny50
Posté le 23-01-2008 à 11:48:39  profilanswer
 

ok JE TE REMERCIE ENORMEMENT

n°1675556
omega2
Posté le 23-01-2008 à 11:50:46  profilanswer
 

Moins fort, d'autres risquent d'entendre. :P


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

  [resolu]image dynamique en php

 

Sujets relatifs
Listes et sort [résolu][Resolu] Ajout dynamique onclick et problème d'auto-execution
[Résolu][ASP .NET][C#] Désactiver l'impersonation en code behind[resolu]Ouverture image à l'aide de javascript
PB affichage des image dans un mail html[RESOLU] Problème de lecture MP3 sur page html
LoadDib => charger une image en 24 bits ?Génération image crypto
Plus de sujets relatifs à : [resolu]image dynamique en php


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