edito
forum (21 057)
making of
preview newsletter
photoshop shortcuts
plan du site
b�tisier (24)
nouveaut�s (67)
mises � jour
banni�res (92)
liste de diffusion
infos l�gales
 


 

Devenez awares ! Et essayez de survivre.




aper�u
 

 

login | logout
g�rez votre profil
devenez membre
membres (2161)
anniversaires (796)
awares (349)
mickeys (343)
notables (83)
mod�rateurs (9)
votre vie priv�e

 

 

amis (22)
gfx fran�ais (58)
gfx autres (383)
pixel art (67)
ascii art (0)
paint/draw (97)
communaut�s (27)
portails gfx (16)
ressources (36)
flash (253)
3D (38)
java (2)

proposez votre site
derni�res entr�es
al�atoire (999)
quicklist
top 10










































999 sites
934 104 hits
 
 

� propos des tutos
tous les tutos (48)
rechercher un tuto

tutos al�atoires
679 385 hits

 

 

screen fonts
brushes
softwares
 
 
 

 

stats publiques
infocentres
r�f�rents (25071)
refs quicklist (25071)
visiteurs uniques
awards

20 697 592 hits
 




ous serez probablement amen�s, g�n�ralement pour g�n�rer le contenu ou le menu d'une interface au pixel, � transformer une cha�ne de caract�res, quelle qu'elle soit, en une suite d'images repr�sentant respectivement les lettres de la chaine. La fonction de transformation de cha�ne en images est �minemment simple, aussi insitera-t-on sur la flexibilit�/adaptabilit� du code et la rigueur apport�e � celui-ci pour minimiser la quantit� de travail d�j� importante (26 lettres, 10 chiffres, 30 caract�res sp�ciaux - ponctuation et autres - soit environ 70 caract�res par planche graphique)


 

Cr�ez un r�pertoire lettres/ dans votre arborescence. Cr�ez un sous-r�pertoire d�signant la typo-image que vous voulez utiliser. Dans l'exemple suivant, on utilisera la typo 04b25 (voir ci-dessous) sans anti-alias : on aura cr�� un r�pertoire lettres/04b25/ . Dans ce r�pertoire on stockera les images repr�sentant chacune des lettres affichables (70 environ si la planche est assez compl�te, 30 voire 10 suffisent parfois).




Cr�ez sous photoshop une planche d'images standard : 26 lettres et 10 chiffres. Cadrez les images au plus pr�s des lettres (pas d'espacement) et sauvez les fichiers au format gif transparent sous les noms lettre_<lettre>.gif. Vous devriez avoir dans le r�pertoire lettres/04b25/ une trentaine de fichiers :

lettre_0.gif
lettre_1.gif
lettre_2.gif
...
lettre_a.gif
lettre_b.gif
...

Quand la planche est finie, cr�ez finalement un fichier spacer.gif de dimension 1x1 pixel, transparent ne contenant aucun calque. Vous pouvez maintenant fermer photoshop (cette �tape est passablement longue et laborieuse, accord�). Avec votre �diteur de texte pr�f�r�, cr�ez un nouveau fichier fonctions_lettres.php contenant une fonction transformer_en_images() qui accepte un param�tre (cha�ne de caract�res) et qui retourne une suite d'images au format HTML. Voici la fonction standard :

function transformer_en_images($chaine)
{
   $images_retournees="";
   // BOUCLE DE PARCOURS DE LA CHAINE
   for ($i=0;$i<strlen($chaine);$i++)
   {
      $caractere_lu=substr($chaine,$i,1);

      // VERIFICATION DE LA PRESENCE DU FICHIER
      if (is_file("../lettres/04b25/lettre_$caractere_lu.gif"))
      {
         // LE FICHIER EXISTE
         // AJOUT D'UNE IMAGE A LA SEQUENCE RETOURNEE
         $images_retournees.="<img src=../lettres/04b25/lettre_$caractere_lu.gif>";
         // AJOUT DE L'ESPACE INTER-LETTRE
         $images_retournees.="<img src=../lettres/04b25/spacer.gif width=1 height=1>";
      }
   }
   return ("$images_retournees");
}

Sauvez le fichier fonctions_lettres.php. La fonction transformer_en_images() lit caract�re par caract�re la cha�ne, remplace chacun des caract�res par son image respective et retourne une cha�ne au format HTML contenant les images. Entre chacune des lettres, elle aura ins�r� une image transparente spacer.gif pour cr�er l'espacement. Si le fichier-image n'existe pas, le caract�re lu est supprim� et la lettre n'est pas affich�e. La fonction n'est pas encore op�rationnelle comme le montre l'exemple ci-dessous, mais vous pouvez d�j� la tester :

<?
   include ("fonctions_lettres.php");
   $chaine="l'empire galactique";
   $images=transformer_en_images("$chaine");
   print ("$images");
?>

R�sultat :



Les �tapes suivantes consisteront � la rendre plus souple pour une utilisation plus g�n�ralis�e (param�trage de l'espacement, du r�pertoire d'images, affichage des caract�res sp�ciaux,etc).


 

Vous aurez remarqu� que certains caract�res sp�ciaux n'ont pas �t� interpr�t�s par la fonction parce que leur �quivalent en fichier n'existait pas (espace, apostrophe, etc). Nous allons g�rer individuellement ces cas particuliers (lettre_..gif ou lettre_/.gif ne sont pas des noms de fichiers valides) en surchargeant notre fonction :

function transformer_en_images($chaine)
{
   $images_retournees="";
   // BOUCLE DE PARCOURS DE LA CHAINE
   for ($i=0;$i<strlen($chaine);$i++)
   {
      $caractere_lu=substr($chaine,$i,1);

      // GESTION DES CARACTERES SPECIAUX
      if ($caractere_lu==".") $caractere_lu="point";
      if ($caractere_lu=="'") $caractere_lu="apostrophe";
      if ($caractere_lu==":") $caractere_lu="deux_points";
      if ($caractere_lu=="/") $caractere_lu="slash";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu==" ") $caractere_lu="espace";

      // VERIFICATION DE LA PRESENCE DU FICHIER
      if (is_file("../lettres/04b25/lettre_$caractere_lu.gif"))
      {
         // LE FICHIER EXISTE
         // AJOUT D'UNE IMAGE A LA SEQUENCE RETOURNEE
         $images_retournees.="<img src=../lettres/04b25/lettre_$caractere_lu.gif>";
         // AJOUT DE L'ESPACE INTER-LETTRE
         $images_retournees.="<img src=../lettres/04b25/spacer.gif width=1 height=1>";
      }
   }
   return ("$images_retournees");
}

Cr�ez maintenant sous photoshop les fichiers lettre_point.gif, lettre_apostrophe.gif, lettre_slash.gif... sur le m�me principe.

La m�me fonction donne maintenant pour r�sultat :




 

Il serait maintenant agr�able de pouvoir param�trer l'espacement entre les lettres pour produire diff�rentes mises en page avec la m�me typo ( rappelez-vous comme il est long de faire une planche ). La nouvelle version accepte un param�te de plus : la largeur de l'espacement entre les lettres exprim�e en pixels :

function transformer_en_images($chaine, $espacement_entre_lettre)
{
   $images_retournees="";
   // BOUCLE DE PARCOURS DE LA CHAINE
   for ($i=0;$i<strlen($chaine);$i++)
   {
      $caractere_lu=substr($chaine,$i,1);

      // GESTION DES CARACTERES SPECIAUX
      if ($caractere_lu==".") $caractere_lu="point";
      if ($caractere_lu=="'") $caractere_lu="apostrophe";
      if ($caractere_lu==":") $caractere_lu="deux_points";
      if ($caractere_lu=="/") $caractere_lu="slash";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu==" ") $caractere_lu="espace";

      // VERIFICATION DE LA PRESENCE DU FICHIER
      if (is_file("../lettres/04b25/lettre_$caractere_lu.gif"))
      {
         // LE FICHIER EXISTE
         // AJOUT D'UNE IMAGE A LA SEQUENCE RETOURNEE
         $images_retournees.="<img src=../lettres/04b25/lettre_$caractere_lu.gif>";
         // AJOUT DE L'ESPACE INTER-LETTRE
         $images_retournees.="<img src=../lettres/04b25/spacer.gif width=$espacement_entre_lettre height=1>";
      }
   }
   return ("$images_retournees");
}

Voici le r�sultat en appelant la fonction transformer_en_images($chaine,4) :




 

Remarquez que l'image transparente servant � cr�er les espacements entre lettres a une hauteur de 1 pixel, ce qui cr�e une irr�gularit� dans la zone sensible comme le montre le sch�ma suivant relatif � l'image cr��e dans l'�tape pr�c�dente:



<- zone sensible

Or, si vous d�cidez de mettre un lien sur votre s�quence d'images, seul les lettres seront cliquables et le pixel inf�rieur des espaces. Pour rem�diez � cela, il faudrait pouvoir faire varier la hauteur de l'image transparente simulant les espaces de mani�re � avoir une zone sensible comme celle-ci :



<- nouvelle zone sensible

La nouvelle version g�re ce principe en rajoutant le param�tre "hauteur de lettre". On pourra enfin choisir le nom du r�pertoire dans lequel prendre les images (dans le cas o� vous auriez le courage et le temps de faire plusieurs planches de 70 caract�res) :

function transformer_en_images($chaine, $espacement_entre_lettre,$hauteur_de_lettre,$rep_fonts)
{
   $images_retournees="";
   // BOUCLE DE PARCOURS DE LA CHAINE
   for ($i=0;$i<strlen($chaine);$i++)
   {
      $caractere_lu=substr($chaine,$i,1);

      // GESTION DES CARACTERES SPECIAUX
      if ($caractere_lu==".") $caractere_lu="point";
      if ($caractere_lu=="'") $caractere_lu="apostrophe";
      if ($caractere_lu==":") $caractere_lu="deux_points";
      if ($caractere_lu=="/") $caractere_lu="slash";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu=="�") $caractere_lu="e";
      if ($caractere_lu==" ") $caractere_lu="espace";

      // VERIFICATION DE LA PRESENCE DU FICHIER
      if (is_file("../lettres/$rep_fonts/lettre_$caractere_lu.gif"))
      {
         // LE FICHIER EXISTE
         // AJOUT D'UNE IMAGE A LA SEQUENCE RETOURNEE
         $images_retournees.="<img src=../lettres/$rep_fonts/lettre_$caractere_lu.gif border=0>";
         // AJOUT DE L'ESPACE INTER-LETTRE
         $images_retournees.="<img src=../lettres/$rep_fonts/spacer.gif width=$espacement_entre_lettre height=$hauteur_de_lettre border=0>";
      }
   }
   return ("$images_retournees");
}

Voici le r�sultat en appelant la fonction transformer_en_images($chaine,4,8,"04b25") et sa zone sensible respective :



<- zone sensible

Et avec la fonction transformer_en_images($chaine,1,6,"silkscreen") et sa zone sensible respective :



<- zone sensible

Si vous avez sauv� chacune des images sur un fond transparent et sans bord autour des lettres, vous pouvez d�j� :

  • d'une part utiliser une typo d�finie sur n'importe quelle couleur de fond.
  • d'autre part, choisir un espacement entre lettres compris entre 0 et plusieurs pixels.


  • De quoi r�aliser plusieurs effets sympathiques sans n�cessairement multiplier la quantit� de travail par 10, le plus long �tant de r�aliser les planches.

    piregwan
    5168 visites




     

    piregwan, 16 02 2002 � 15:11

    > possibilit� de concat�ner
    > ces images en une seule
    > en utilisant la GD de PHP4 ?

    oui. g�n�ration de gif, jpeg, png a la vol�e. librairie non stable, en cours de dev.

    "PHP is not limited to creating just HTML output. It can also be used to create and manipulate image files in a variety of different image formats, including gif, png, jpg, wbmp, and xpm. Even more convenient, php can output image streams directly to a browser. You will need to compile PHP with the GD library of image functions for this to work. GD and PHP may also require other libraries, depending on which image formats you want to work with. GD stopped supporting Gif images in version 1.6."



    piregwan (agent mad fana...)
    48 ans (chamb�ry, 73)
    krakoukas@piregwan-genesis...
    http://www.piregwan-gen...


    Qu_, 12 02 2002 � 11:26

    En fait, on obtiens des images coll�es les unes � cot� des autres et non pas une seule et m�me image !?

    N'y a t-il pas possibilit� de concat�ner ces images en une seule en utilisant la GD de PHP4 ?


    Pour les gros nuls en prog comme moi, �a marche mieux quand...
    <? et ?> en d�but et fin de la fonction transformer_en_image( ).

    je mets des guillemets � $chaine et aux dimensions hauteur, largeur = transformer_en_images ("$chaine","4","8","0 4b25")

    Qu_


    Qu_ (minnie)
    (Nantes)
    qu_@hotmail.com


    Julien, 29 12 2001 � 22:50

    Pardon pardon mais je comprends pas tr�s bien l'int�r�t de ce tut.
    Est-ce que quelqu'un pourrait m'expliquer dans des termes simples le pkoi du comment.

    PS: En des termes simples pas que je sois b�te (enfin pas s�r...) mais en ce moment j'ai tendance � me bourrer la gueule pour oublier mais �a marche pas en fait...


    Julien (mickey)
    46 ans (Lille)
    j_de_bruyne@infonie.fr


    queru, 21 10 2001 � 20:02

    Merci Nik, bien tent� ! Je m'en �tais rendu compte, bien �videmment. Je sais ce que signifie d�clarer une fonction et de l'appeler d'un autre endroit (j'ai une maigre exp� de ASP et de javascript !
    Cela ne marche pas quand m�me. .
    ...probablement une mauvaise d�claration de r�p. ou je ne sais pas quoi. ...Pas gr�ve, je vais revoir �a un peu plus tard.

    Merci quand m�me...


    queru


    niko, 17 10 2001 � 19:43

    query, je te donne une piste � suivre, comme t'as dit gwan, la fonction que tu appeles n'est pas defini, en fait une erreur c'est glisser dans le tuto. La fontion que tu appelles s'appelle transformer_en_image s(), jusque l� t'es d'accord avec moi, or la fonction qui transformer le texte en image s'appelle transformer_en_lettr es(), donc tu vois o� je veux en venir, hein. Quand tu fais un appel � la fonction transformer_en_image s(), comme tu ne l'a pas defini, une erreur appara�t et tout cela est bien normal. La solution est de renommer la definition de la fonction en transformer_en_image s(). En esperant, que tu es compris ce que j'ai essaye de te dire.


    niko (admin. exil� f...)
    44 ans (Reims)
    niko@piregwan.com
    http://summerefresh.pir...


    queru, 17 10 2001 � 11:37

    Je suis un peu b�te et surtout ignare en d�veloppement. J'ai repris tel quel ton exemple. et cela ne marche pas...??! =:(


    queru


    ( 12 commentaires )
    << 1 2 3 4 5 6 7 8 9 10 11 12 >>

     











    P I R E G W A N . C O M
    interface & d�veloppement - piregwan 1998-2002




    toutes les banni�res


    g�n�r� en 0.185 secondes