[PHP-GD] Transformer un fichier texte en image ...

Transformer un fichier texte en image ... [PHP-GD] - PHP - Programmation

Marsh Posté le 10-10-2003 à 00:33:22    

Bonjour à tous,
 
Qqn sait il comment faire pour transformer un fichier texte en image grace à PHP en utilisant une police bitmap ?
 
c'est pour faire un script qui afficherait correctement du ASCii Art...
 
Merci par avance
 
++

Reply

Marsh Posté le 10-10-2003 à 00:33:22   

Reply

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

Exemple d'une fonction que j'ai récemment faite :
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=

Reply

Marsh Posté le 10-10-2003 à 09:00:49    

Merci pour ton aide... C'est deja un debut :)
 
Bon, au lieu de tourner autour du pot je vais vous montrer ce que je voudrais faire :
 
http://www.vcdquality.com/nfo.php?id=20326
 
Merci de ne pas faire attention à la nature du site...
 
Comme vous le voyez, le NFO affiché est une image ... mais elle est crée à partir d'un fichier .NFO en texte... De plus il s'agit là d'une police OEM/DOS, qui affiche les carré noir, grisés, les lignes etc...
 
Voila donc ce que j'aimerais pour voir faire pour affichre correctement les AsciiArt :)
 
Merci

Reply

Marsh Posté le 10-10-2003 à 09:14:12    

et ça ?  
 
C'est pas du vrai ASCII Art parce que c'est toujours le même texte mais c'est déjà pas mal:
 
c'est Rossi si jamais....

Code :
  1. <html>
  2. <body bgcolor="black">
  3. <form enctype="multipart/form-data" action="index.php?m=u" method="post">
  4.       <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
  5.       Transfère le fichier <input type="file" name="monfichier" />
  6.   Résolution <input type="text" name="resolution" value="150" />
  7.   Texte <input type="text" name="txt" value="01" />
  8.        <input type="submit"/>
  9. </form>
  10. <?
  11.   // default
  12.   $file = "default.jpg";
  13.   $text = "01" ;
  14.   $resol = 100; 
  15.   if ($m == "u" )
  16.     {
  17.  $repertoireDestination = "" ;
  18.      $nomDestination        = $_FILES["monfichier"]["name"];
  19.     // Pour raison de sécurité nous ajouterons aux fichiers
  20.     // portant une extension .php .php3, l'extension .txt
  21.     if (eregi(".php", $nomDestination)) {
  22.         $nomDestination .= ".txt";
  23.     }
  24.    
  25.     if (is_uploaded_file($_FILES["monfichier"]["tmp_name"]))
  26.   {
  27.         if (rename($_FILES["monfichier"]["tmp_name"],
  28.                    $repertoireDestination.$nomDestination))
  29.      
  30.   {
  31.             echo "Le fichier temporaire ".$_FILES["monfichier"]["tmp_name"].
  32.                  " a été déplacé vers ".$repertoireDestination.$nomDestination;
  33.         }
  34.   else
  35.   {
  36.             echo "Le déplacement du fichier temporaire a échoué".
  37.                  " vérifiez l'existence du répertoire ".$repertoireDestination;
  38.      }         
  39.     }
  40.  else
  41.        echo "Le fichier n'a pas été uploadé (trop gros ?)";
  42.   
  43.   
  44. $file = $repertoireDestination.$nomDestination ;
  45. $resol = $resolution ;
  46. $text = $txt ;
  47. }
  48.   $image = imageCreateFromJPEG($file);
  49.   $size = getimagesize($file);
  50.   $width = $size[0] ;
  51.   $height = $size[1] ;
  52.   $resol = 100;
  53.  
  54.   $xgrid = ceil($width/$resol);
  55.   $ygrid = $xgrid*1.8;
  56.  
  57.   $x = $xgrid;
  58.   $y = $ygrid;
  59.  
  60.   while ($y<$height)
  61.   {
  62.      while ($x<$width)
  63.      {
  64.         $colorindex = imagecolorat($image,$x,$y);
  65.         $rgb = imagecolorsforindex($image,$colorindex);
  66.      
  67.         $color = dechex(($rgb[red]<<16)|($rgb[green]<<8)|$rgb[blue]);
  68.        
  69.         $letter = substr($text,$pos,1); 
  70.         $pos++;
  71.         if ($pos >= strlen($text)) { $pos = 0; }
  72.      
  73.         if ($color != $oldcolor && $letter != " " ) { echo "</span><span style=\"color:#$color;\">$letter"; }
  74.         else { echo $letter; }
  75.      
  76.         $oldcolor = $color;
  77.      
  78.         $x += $xgrid;
  79.      }
  80.      echo "\r\n<br />\r\n";
  81.      $x = $xgrid;
  82.      $y += $ygrid;
  83. }
  84. unlink($repertoireDestination.$nomDestination) ;
  85. ?>
  86. </body>
  87. </html>


 
PS : le code a été posté il y a quelques temps par un gars du forum. CopyLeft


Message édité par jagstang le 19-01-2008 à 10:51:50

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-10-2003 à 09:14:23    

Ben en manipulant ma fonction et en la modifiant un peu pour gérer les saut de lignes, tu peux y arriver sans problème. De plus, ce genre de police a toutes les lettres de la même largeur ce qui fait que c'est bcp plus simple que dans le cas de ma fonction où il a fallu que je récupère une à une la largeur de chaque caractère au fur et et à mesure de la lecture.

Reply

Marsh Posté le 10-10-2003 à 10:21:08    

Oui mais la police TERMINAL est une police speciale ... aucune autre police a ma connaissance permet d'afficher des carré, des smiley ou encore des "cadres" ...
 
Voici 2 exemples... les 2 sont avec une police à chasse fixe.
 
FIXEDSYS :
http://donkeyxchange.com/txt1.bmp
 
TERMINAL :
http://donkeyxchange.com/txt2.bmp
 
Je voudrais afficher, sur une page web, le 2eme exemple...
 
++


Message édité par Dj YeLL le 10-10-2003 à 10:21:22
Reply

Marsh Posté le 10-10-2003 à 11:17:06    

ce superbe script fait plutot l'inverse de ce que tu souhaite mais quelle beauté : http://www.sebastian-r.de/asciiart/

Reply

Marsh Posté le 10-10-2003 à 11:20:52    

:lol:

Reply

Marsh Posté le 10-10-2003 à 11:35:41    

Dj YeLL a écrit :

Oui mais la police TERMINAL est une police speciale ... aucune autre police a ma connaissance permet d'afficher des carré, des smiley ou encore des "cadres" ...
 
Voici 2 exemples... les 2 sont avec une police à chasse fixe.
 
FIXEDSYS :
http://donkeyxchange.com/txt1.bmp
 
TERMINAL :
http://donkeyxchange.com/txt2.bmp
 
Je voudrais afficher, sur une page web, le 2eme exemple...
 
++


 
Je ne vois pas le problème. Tu charges cette police avec mon script remanié pour les sauts de ligne, et normalemant, ça doit être bon non ?

Reply

Marsh Posté le 10-10-2003 à 11:37:23    

Ben le pb est que la police TERMINAL est une police Bitmap et non TrueType ... et qu'il me semble que GD ne gere que les polices TrueType non ?

Reply

Marsh Posté le 10-10-2003 à 11:37:23   

Reply

Marsh Posté le 10-10-2003 à 11:38:03    

Pas grave, tu utilises fontographer pour la convertir en true type et le tour est joué.

Reply

Marsh Posté le 10-10-2003 à 11:40:40    

Ahhhh !! Merci bcp ! Je vais tester ça alors :)
 
Merci pour tout
 
++

Reply

Marsh Posté le 10-10-2003 à 11:53:46    

Dj YeLL a écrit :

Ahhhh !! Merci bcp ! Je vais tester ça alors :)
 
Merci pour tout
 
++


 
De rien, mais je crois qu'il y a encore plus simple :
 
http://dev.nexen.net/scripts/details.php?scripts=859

Reply

Marsh Posté le 10-10-2003 à 12:23:48    

Ben en fait apres 2 jours de recherche intensive, je viens ENFIN de trouver une police TTF qui est exactement la meme que la police TERMINAL de windows :) Le mec l'a refaite entierement, je viens de tester elle est exactement pareille ...
 
Il me reste plus qu'a adapter un peu ton script, merci bcp !
 
++

Reply

Marsh Posté le 10-10-2003 à 23:27:37    

Arg ! Ya rien a faire, j'y arrive pas ...
 
Il faudrait que le script me créé l'image a partir d'un fichier .txt ... donc qu'il lise toutes les lignes et qu'il en fasse 1 seule image, avec les retour a la ligne au bon endroit etc...
 
Je sais pas faire :(

Reply

Marsh Posté le 11-10-2003 à 01:36:51    

C'est pas dur poutant.
 
Il faut analyser les \n pour connaitre les retours à la ligne...

Reply

Marsh Posté le 11-10-2003 à 16:37:25    

Oui mais avec GD, il faut que l'image soit créée AVANT d'y mettre le texte... Le pb est qu'il faudrait connaitre la largeur de la + large des lignes... De plus comment lire à l'interieur d'un fichier ? Je sais faire pas mal de chose ne php, mais je n'ai encore jamais utilisé le maniement des fichier, et que tres tres peu la librairie GD... donc si qqn pouvait m'aider, ou me donner un lien qui explique correctement comment manipuler les fichier et la lib GD ca serait super :)
 
Désolé de vous embeter avec ça...
 
Merci  
 
++


Message édité par Dj YeLL le 11-10-2003 à 17:03:44
Reply

Marsh Posté le 11-10-2003 à 17:04:40    

Bon ben finallement ya un pb :(
 

Citation :

Fatal error: Call to undefined function: imagettfbbox() in ...


 
Ouin ! Pourtant GD est bien activé chez mon hebergeur :/


Message édité par Dj YeLL le 11-10-2003 à 17:04:52
Reply

Sujets relatifs:

Leave a Replay

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