[TOPIC UNIQUE] Vos classes et fonctions PHP. (les votres hein).

Vos classes et fonctions PHP. (les votres hein). [TOPIC UNIQUE] - PHP - Programmation

Marsh Posté le 30-09-2003 à 17:13:56    

Ecrire un texte avec une police ttf dans une image avec php, vous saviez faire (  :D ).
 
Par contre, ecrire un texte en choisissant l'ESPACEMENT des caractères, là c'est autre chose.
 
C'est pourquoi j'ai réalisé cette fonction que je vous livre (j'ai bien bossé pour y arriver).
 

Code :
  1. <?php
  2. function creation_texte($texte,$txt_taille,$txt_esp,$txt_lg,$txt_ht,$couleur_fd,$couleur_txt,$chemin_police,$nom_fichier,$chemin_image)
  3. {
  4. $image = imageCreate($txt_lg,$txt_ht);
  5. // --> paramètres de couleur de fond.
  6. $couleur_fd_r = hexdec(substr($couleur_fd,0,2));
  7. $couleur_fd_v = hexdec(substr($couleur_fd,2,2));
  8. $couleur_fd_b = hexdec(substr($couleur_fd,4,2));
  9. // --> paramètres de couleur du texte.
  10. $couleur_txt_r = hexdec(substr($couleur_txt,0,2));
  11. $couleur_txt_v = hexdec(substr($couleur_txt,2,2));
  12. $couleur_txt_b = hexdec(substr($couleur_txt,4,2));
  13. // --> Nombre de caractères du texte.
  14. $nbr_caracteres = strlen($texte);
  15. // --> initiation du compteur de distance du catactère en cours.
  16. $cpt_absc_carac = 0;
  17. // ----------
  18. // - boucle -
  19. // ----------
  20. for ($i = 0; $i <= $nbr_caracteres-1; $i++)
  21. {
  22. // --> taille en largeur du caractère en cours.
  23. $caractere_en_cours = substr($texte,$i,1);
  24. $dimensions = imagettfbbox($txt_taille,0,$chemin_police,$caractere_en_cours);
  25. $lg_caractere = ($dimensions[2] - $dimensions[0]) + 1;
  26. // --> définition des images des caractères.
  27. $nom_var_image = "image"."$i";
  28. ${$nom_var_image} = imageCreate($lg_caractere,$txt_ht);
  29. // --> couleur des caractères.
  30. $couleur_fd = imagecolorallocate(${$nom_var_image},$couleur_fd_r,$couleur_fd_v,$couleur_fd_b);
  31. $couleur_txt = imagecolorallocate(${$nom_var_image},$couleur_txt_r,$couleur_txt_v,$couleur_txt_b);
  32. // --> écriture du caractère.
  33. imagettftext(${$nom_var_image},$txt_taille,0,0,$txt_taille,$couleur_txt,$chemin_police,$caractere_en_cours);
  34. // --> ajout du caractère à l'image globale.
  35. imagecopymerge($image,${$nom_var_image}, $cpt_absc_carac, 0, 0, 0, $lg_caractere, $txt_ht, 100);
  36. // --> incrémentation du compteur de position.
  37. $cpt_absc_carac = $cpt_absc_carac + $lg_caractere + $txt_esp;
  38. }
  39. // -----------------------------
  40. // - ecriture du texte complet -
  41. // -----------------------------
  42. $destination = $chemin_image.$nom_fichier;
  43. imageJPEG($image,$destination,70);
  44. }
  45. creation_texte(" Salut les loutres !",11,0,500,16,"BABABA","000000","../font/font.ttf","coucou.jpg","../images/" ); 
  46. ?>


 
explication des paramètres de creation_texte(); :
 
"le texte à afficher", taille_de_la_police, espacement_entre_les_caractères, longueur_image_arrivée, hauteur_image_arrivée, couleur_hexa_fond, couleur_hexa_texte, "chemin de la police","nom du fichier résultant","chemin de l'image à récupérer (juste le chemin, sans le nom de l'image qui est le paramètre d'avant).
 
 
REMARQUE : ATTENTION : pour une raison encore inconnue, le texte doit avoir pour premier caractère un espace sinon, il y a un petit bug avec la couleur de fond (si qqu arrive à trouver pourquoi...  [:totozzz] )


Message édité par Hermes le Messager le 01-10-2003 à 10:16:35
Reply

Marsh Posté le 30-09-2003 à 17:13:56   

Reply

Marsh Posté le 01-10-2003 à 10:15:43    

Aller tiens, je la fait remonter une petite fois et je change le titre du topac.  :)

Reply

Marsh Posté le 01-10-2003 à 14:01:02    

Salut, j'ai testé ta source sans mettre d'espace et ca apparait bien chez moi !


---------------
Ptit con de goret je t'emmerde ^_^
Reply

Marsh Posté le 01-10-2003 à 14:04:28    

_Maximus_ a écrit :

Salut, j'ai testé ta source sans mettre d'espace et ca apparait bien chez moi !


 
En fait j'ai eu le cas avec une seule police.  Je n'ai jamais réussi à savoir pourquoi.  :D  
 
Si tu veux je te l'envoie pour que tu testes.  :)

Reply

Marsh Posté le 01-10-2003 à 14:21:06    

Hermes le Messager a écrit :


 
En fait j'ai eu le cas avec une seule police.  Je n'ai jamais réussi à savoir pourquoi.  :D  
 
Si tu veux je te l'envoie pour que tu testes.  :)  


 
Yep pq pas balance ;)


---------------
Ptit con de goret je t'emmerde ^_^
Reply

Marsh Posté le 01-10-2003 à 14:27:14    

J'ai pas ton mail  :) (je t'envoie la police dès que je l'ai)  
 
Sinon, sache que j'ai le problème uniquement avec le T (majuscule).
 
 :)

Reply

Sujets relatifs:

Leave a Replay

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