|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
AFFICHER UN CODE, UN TEXTE, SOUS LA FORME D'UNE IMAGE PLUS OU MOINS DÉFORMÉE (OUTIL PERMETTANT DE LIMITER LE SPAM ET DE STOPPER LES BOTS)
Information sur la source
Description
//============================================================================== // D E S C R I P T I O N //============================================================================== //| | //| FICHIER : CreateImageFromText.php | //| | //| OBJECTIF : écrit un texte sous une forme imagée et tordue paramétrable. | //| | //| Réalisé par BlueMan (http://www.blueman.name/me_contacter.php) | //| | //============================================================================== // // ATTENTION : pour fonctionner, ce script nécessite : // // la police TrueType "Seawawe Extended Keyset" : "Seawek.ttf" // qui doit être placée dans le même répertoire que ce script. // // Les Paramètres sont CASE INSENSITIVE et leur ordre n'a aucune importance. // // Les Paramètres possibles en entrée sont : // //============================================================================== //| | | OBLIGATOIRE | //| PARAMÈTRE | ROLE | ou | //| | | VALEUR PAR DÉFAUT | //|============================================================================| //| Text = Letexte | Le texte à transformer en image | Oui | //|----------------------------------------------------------------------------| //| Size = n | La taille de la police au sens | 20 | //| | windows (8, 10, 12 , 14, etc.) | | //|----------------------------------------------------------------------------| //| Color = RRVVBB | La couleur des lettres en Hexa | 0000FF (bleu) | //|----------------------------------------------------------------------------| //| MaxAngle = a | Les caractères seront écrits | | //| | avec un angle exprimé en degré | 20 | //| | dans [-MaxAngle , +MAxAngle] | | //-----------------------------------------------------------------------------| //| BGColor = RRVVBB | La couleur de remplissage du | FFFFFF (blanc) | //| | fond en Hexa | | //|----------------------------------------------------------------------------| //| Border = true|false | Avec ou sans cadre | true | //|----------------------------------------------------------------------------| //| BorderColor = RRVVBB | La couleur du cadre en Hexa | 000000 (noir) | //|----------------------------------------------------------------------------| //| Gutter = g | Le nombre de pixels de la | | //| | gouttière séparant le texte de | 6 | //| | la bordure. | | //|----------------------------------------------------------------------------| //| Quality = q | Un nombre dans [0,100] | | //| | indiquant la qualité de | 40 | //| | l'image JPEG. | | //------------------------------------------------------------------------------ // // Exemples de codes à placer dans votre source : // ---------------------------------------------- // // Exemple 1 : echo "<IMG src='CreateImageFromText.php?Text=ABCDE'>"; // // Exemple 2 : echo "<IMG src='CreateImageFromText.php?Cadre=false&Text=ABCDE&MaxAngle=12&Color=FF0000' align='absmiddle'>"; // // Exemples vivants : // ------------------ // // Exemple vivant 1 : http://www.blueman.name/me_contacter.php // // Exemple vivant 2 : http://www.blueman.name/Telechargement.php // // Exemple vivant 3 : http://www.agiradesainthubert.ca/ContactFr.php //
Source
- <?php
- //==============================================================================
- // D E S C R I P T I O N
- //==============================================================================
- //| |
- //| FICHIER : CreateImageFromText.php |
- //| |
- //| OBJECTIF : écrit un texte sous une forme imagée et tordue paramétrable. |
- //| |
- //| Réalisé par BlueMan (http://www.blueman.name/me_contacter.php) |
- //| |
- //==============================================================================
- //
- // ATTENTION : pour fonctionner, ce script nécessite :
- //
- // la police TrueType "Seawawe Extended Keyset" : "Seawek.ttf"
- // qui doit être placée dans le même répertoire que ce script.
- //
- // Les Paramètres sont CASE INSENSITIVE et leur ordre n'a aucune importance.
- //
- // Les Paramètres possibles en entrée sont :
- //
- //==============================================================================
- //| | | OBLIGATOIRE |
- //| PARAMÈTRE | ROLE | ou |
- //| | | VALEUR PAR DÉFAUT |
- //|============================================================================|
- //| Text = Letexte | Le texte à transformer en image | Oui |
- //|----------------------------------------------------------------------------|
- //| Size = n | La taille de la police au sens | 20 |
- //| | windows (8, 10, 12 , 14, etc.) | |
- //|----------------------------------------------------------------------------|
- //| Color = RRVVBB | La couleur des lettres en Hexa | 0000FF (bleu) |
- //|----------------------------------------------------------------------------|
- //| MaxAngle = a | Les caractères seront écrits | |
- //| | avec un angle exprimé en degré | 20 |
- //| | dans [-MaxAngle , +MAxAngle] | |
- //-----------------------------------------------------------------------------|
- //| BGColor = RRVVBB | La couleur de remplissage du | FFFFFF (blanc) |
- //| | fond en Hexa | |
- //|----------------------------------------------------------------------------|
- //| Border = true|false | Avec ou sans cadre | true |
- //|----------------------------------------------------------------------------|
- //| BorderColor = RRVVBB | La couleur du cadre en Hexa | 000000 (noir) |
- //|----------------------------------------------------------------------------|
- //| Gutter = g | Le nombre de pixels de la | |
- //| | gouttière séparant le texte de | 6 |
- //| | la bordure. | |
- //|----------------------------------------------------------------------------|
- //| Quality = q | Un nombre dans [0,100] | |
- //| | indiquant la qualité de | 40 |
- //| | l'image JPEG. | |
- //------------------------------------------------------------------------------
- //
- // Exemples de codes à placer dans votre source :
- // ----------------------------------------------
- //
- // Exemple 1 : echo "<IMG src='CreateImageFromText.php?Text=ABCDE'>";
- //
- // Exemple 2 : echo "<IMG src='CreateImageFromText.php?Cadre=false&Text=ABCDE&MaxAngle=12&Color=FF0000' align='absmiddle'>";
- //
- // Exemples vivants :
- // ------------------
- //
- // Exemple vivant 1 : http://www.blueman.name/me_contacter.php
- //
- // Exemple vivant 2 : http://www.blueman.name/Telechargement.php
- //
- // Exemple vivant 3 : http://www.agiradesainthubert.ca/ContactFr.php
- //
- //------------------------------------------------------------------------------
- // I M P L É M E N T A T I O N
- //------------------------------------------------------------------------------
-
- // Définition du Header : obligatoire et obligatoirement le premier elément envoyé
- // au navigateur
- header("Content-type: image/jpeg");
-
- // On rend case insensitive, pour le développeur, le nom des paramètres,
- // ceci afin de limiter les erreurs idiotes engendrant des pertes de temps.
- // On les transforme tous en MAJUSCULES
- if (IsSet($_GET)) $_GET = array_change_key_case($_GET, CASE_UPPER);
-
- // Récupération ou non des paramétres
- // Le Texte
- if ( IsSet($_GET['TEXT'])) {$Text = $_GET['TEXT'];} else {$Text = "";}
-
- // Calcul du nombre de lettres
- $NbLettres = StrLen($Text);
- if ($NbLettres == 0) Exit;
-
- // La Taille de la police du texte
- if ( IsSet($_GET['SIZE']) and ($_GET['SIZE'] > 0)) { $TaillePolice = $_GET['SIZE'];}
- else {$TaillePolice = 20;}
-
- // La couleur des lettres à écrire
- if ( IsSet($_GET['COLOR']))
- {
- $Couleur = $_GET['COLOR'];
- $RougeLettres=IntVal(SubStr($Couleur,0,2),16);
- $VertLettres=IntVal(SubStr($Couleur,2,2),16);
- $BleuLettres=IntVal(SubStr($Couleur,4,2),16);
- }
- else {$RougeLettres=0; $VertLettres=0; $BleuLettres=255;}
-
- // Les caractères seront écrits avec un angle exprimé en degré dans [-MaxAngle , +MAxAngle]
- if ( IsSet($_GET['MAXANGLE']) and ($_GET['MAXANGLE'] >= 0)) {$MaxAngle = $_GET['MAXANGLE'];}
- else {$MaxAngle = 20;}
-
- // La couleur de fond
- if ( IsSet($_GET['BGCOLOR']))
- {
- $Couleur = $_GET['BGCOLOR'];
- $RougeFond=IntVal(SubStr($Couleur,0,2),16);
- $VertFond=IntVal(SubStr($Couleur,2,2),16);
- $BleuFond=IntVal(SubStr($Couleur,4,2),16);
- }
- else {$RougeFond=255; $VertFond=255; $BleuFond=255;}
-
- // L'utilisateur veut-il un cadre ?
- // On a utilisé strtolower afin de rendre case insensitive l'écriture des
- // booléens destinés au paramètre CADRE
- if ( IsSet($_GET['BORDER'])) {$IsCadre = !(strtolower($_GET['BORDER']) == "false");}
- else {$IsCadre = true;}
-
- // La couleur du cadre
- if ($IsCadre and IsSet($_GET['BORDERCOLOR']))
- {
- $Couleur = $_GET['BORDERCOLOR'];
- $RougeCadre=IntVal(SubStr($Couleur,0,2),16);
- $VertCadre=IntVal(SubStr($Couleur,2,2),16);
- $BleuCadre=IntVal(SubStr($Couleur,4,2),16);
- }
- else {$RougeCadre=0; $VertCadre=0; $BleuCadre=0;}
-
- // La gouttière
- if ( IsSet($_GET['GUTTER']) and ($_GET['GUTTER'] > -1)) {$Gutter = $_GET['GUTTER'];}
- else {$Gutter = 6;}
-
- // La qualité
- if ( IsSet($_GET['QUALITY']) and ($_GET['QUALITY'] > -1)) {$Quality = $_GET['QUALITY'];}
- else {$Quality = 40;}
-
- // Calcul de la taille de l'image
- // Cette police est particulièrement bien adaptée à cette tâche
- $Font = "Seawek.ttf"; // Nom complet : Seawave Extended Keyset (TrueType)
- $Hauteur = $TaillePolice;
- $Pos = $Gutter;
- $HauteurMax = 0;
- for ($i=0; $i<$NbLettres; $i++)
- {
- $Angle = rand(-$MaxAngle,$MaxAngle);
- $InfoRect= ImageTTFBbox($TaillePolice, $Angle, $Font, $Text[$i]);
-
- $LargeurCar1 = $InfoRect[2]-$InfoRect[6];
- $LargeurCar2 = $InfoRect[4]-$InfoRect[0];
- if ($LargeurCar1 > $LargeurCar2) {$LargeurCar = $LargeurCar1;} else {$LargeurCar = $LargeurCar2;}
-
- $HauteurCar1 = $InfoRect[1]-$InfoRect[5];
- $HauteurCar2 = $InfoRect[3]-$InfoRect[7];
- if ($HauteurCar1 > $HauteurCar2) {$HauteurCar = $HauteurCar1;} else {$HauteurCar = $HauteurCar2;}
-
- if ($HauteurCar > $HauteurMax) {$HauteurMax=$HauteurCar;}
-
- if ($InfoRect[6] > $InfoRect[0]) {$OffsetX = $InfoRect[0];} else {$OffsetX = $InfoRect[6];}
- if ($InfoRect[7] > $InfoRect[5]) {$OffsetY = $InfoRect[5];} else {$OffsetY = $InfoRect[7];}
-
- $aDatas[] = array($Pos, $Angle, $LargeurCar, $HauteurCar, $OffsetX, $OffsetY);
- $Pos = $Pos + $LargeurCar;
- }
- $Largeur = $Gutter + $Pos + $Gutter;
- $Hauteur = $Gutter + $HauteurMax + $Gutter;
-
- // Création de l'image
- $Image = ImageCreateTrueColor($Largeur,$Hauteur);
-
- // Création des couleurs
- $CoulFond = ImageColorAllocate($Image, $RougeFond, $VertFond, $BleuFond);
- $CoulLettres = ImageColorAllocate($Image, $RougeLettres, $VertLettres, $BleuLettres);
- $CoulCadre = ImageColorAllocate($Image, $RougeCadre, $VertCadre, $BleuCadre);
-
- // Remplissage du fond
- ImageFilledRectangle($Image, 0, 0, $Largeur-1, $Hauteur-1, $CoulFond);
-
- // Traçage du cadre si nécessaire
- if ($IsCadre) {ImageRectangle($Image, 0, 0, $Largeur-1, $Hauteur-1, $CoulCadre);}
-
- // Ajout du texte
- $Pos = $Gutter;
- for ($i=0; $i<$NbLettres; $i++)
- {
- ImageTTFText($Image, $TaillePolice, $aDatas[$i][1], $Pos-$aDatas[$i][4], (($Hauteur - $aDatas[$i][3])/2)+$Gutter-$aDatas[$i][5], $CoulLettres, $Font, $Text[$i]);
- $Pos = $Pos + $aDatas[$i][2];
- }
-
- // Affichage de l'image
- ImageJpeg($Image,NULL,$Quality);
- ImageDestroy($Image);
- //================================ END of FILE =================================
- ?>
<?php
//==============================================================================
// D E S C R I P T I O N
//==============================================================================
//| |
//| FICHIER : CreateImageFromText.php |
//| |
//| OBJECTIF : écrit un texte sous une forme imagée et tordue paramétrable. |
//| |
//| Réalisé par BlueMan (http://www.blueman.name/me_contacter.php) |
//| |
//==============================================================================
//
// ATTENTION : pour fonctionner, ce script nécessite :
//
// la police TrueType "Seawawe Extended Keyset" : "Seawek.ttf"
// qui doit être placée dans le même répertoire que ce script.
//
// Les Paramètres sont CASE INSENSITIVE et leur ordre n'a aucune importance.
//
// Les Paramètres possibles en entrée sont :
//
//==============================================================================
//| | | OBLIGATOIRE |
//| PARAMÈTRE | ROLE | ou |
//| | | VALEUR PAR DÉFAUT |
//|============================================================================|
//| Text = Letexte | Le texte à transformer en image | Oui |
//|----------------------------------------------------------------------------|
//| Size = n | La taille de la police au sens | 20 |
//| | windows (8, 10, 12 , 14, etc.) | |
//|----------------------------------------------------------------------------|
//| Color = RRVVBB | La couleur des lettres en Hexa | 0000FF (bleu) |
//|----------------------------------------------------------------------------|
//| MaxAngle = a | Les caractères seront écrits | |
//| | avec un angle exprimé en degré | 20 |
//| | dans [-MaxAngle , +MAxAngle] | |
//-----------------------------------------------------------------------------|
//| BGColor = RRVVBB | La couleur de remplissage du | FFFFFF (blanc) |
//| | fond en Hexa | |
//|----------------------------------------------------------------------------|
//| Border = true|false | Avec ou sans cadre | true |
//|----------------------------------------------------------------------------|
//| BorderColor = RRVVBB | La couleur du cadre en Hexa | 000000 (noir) |
//|----------------------------------------------------------------------------|
//| Gutter = g | Le nombre de pixels de la | |
//| | gouttière séparant le texte de | 6 |
//| | la bordure. | |
//|----------------------------------------------------------------------------|
//| Quality = q | Un nombre dans [0,100] | |
//| | indiquant la qualité de | 40 |
//| | l'image JPEG. | |
//------------------------------------------------------------------------------
//
// Exemples de codes à placer dans votre source :
// ----------------------------------------------
//
// Exemple 1 : echo "<IMG src='CreateImageFromText.php?Text=ABCDE'>";
//
// Exemple 2 : echo "<IMG src='CreateImageFromText.php?Cadre=false&Text=ABCDE&MaxAngle=12&Color=FF0000' align='absmiddle'>";
//
// Exemples vivants :
// ------------------
//
// Exemple vivant 1 : http://www.blueman.name/me_contacter.php
//
// Exemple vivant 2 : http://www.blueman.name/Telechargement.php
//
// Exemple vivant 3 : http://www.agiradesainthubert.ca/ContactFr.php
//
//------------------------------------------------------------------------------
// I M P L É M E N T A T I O N
//------------------------------------------------------------------------------
// Définition du Header : obligatoire et obligatoirement le premier elément envoyé
// au navigateur
header("Content-type: image/jpeg");
// On rend case insensitive, pour le développeur, le nom des paramètres,
// ceci afin de limiter les erreurs idiotes engendrant des pertes de temps.
// On les transforme tous en MAJUSCULES
if (IsSet($_GET)) $_GET = array_change_key_case($_GET, CASE_UPPER);
// Récupération ou non des paramétres
// Le Texte
if ( IsSet($_GET['TEXT'])) {$Text = $_GET['TEXT'];} else {$Text = "";}
// Calcul du nombre de lettres
$NbLettres = StrLen($Text);
if ($NbLettres == 0) Exit;
// La Taille de la police du texte
if ( IsSet($_GET['SIZE']) and ($_GET['SIZE'] > 0)) { $TaillePolice = $_GET['SIZE'];}
else {$TaillePolice = 20;}
// La couleur des lettres à écrire
if ( IsSet($_GET['COLOR']))
{
$Couleur = $_GET['COLOR'];
$RougeLettres=IntVal(SubStr($Couleur,0,2),16);
$VertLettres=IntVal(SubStr($Couleur,2,2),16);
$BleuLettres=IntVal(SubStr($Couleur,4,2),16);
}
else {$RougeLettres=0; $VertLettres=0; $BleuLettres=255;}
// Les caractères seront écrits avec un angle exprimé en degré dans [-MaxAngle , +MAxAngle]
if ( IsSet($_GET['MAXANGLE']) and ($_GET['MAXANGLE'] >= 0)) {$MaxAngle = $_GET['MAXANGLE'];}
else {$MaxAngle = 20;}
// La couleur de fond
if ( IsSet($_GET['BGCOLOR']))
{
$Couleur = $_GET['BGCOLOR'];
$RougeFond=IntVal(SubStr($Couleur,0,2),16);
$VertFond=IntVal(SubStr($Couleur,2,2),16);
$BleuFond=IntVal(SubStr($Couleur,4,2),16);
}
else {$RougeFond=255; $VertFond=255; $BleuFond=255;}
// L'utilisateur veut-il un cadre ?
// On a utilisé strtolower afin de rendre case insensitive l'écriture des
// booléens destinés au paramètre CADRE
if ( IsSet($_GET['BORDER'])) {$IsCadre = !(strtolower($_GET['BORDER']) == "false");}
else {$IsCadre = true;}
// La couleur du cadre
if ($IsCadre and IsSet($_GET['BORDERCOLOR']))
{
$Couleur = $_GET['BORDERCOLOR'];
$RougeCadre=IntVal(SubStr($Couleur,0,2),16);
$VertCadre=IntVal(SubStr($Couleur,2,2),16);
$BleuCadre=IntVal(SubStr($Couleur,4,2),16);
}
else {$RougeCadre=0; $VertCadre=0; $BleuCadre=0;}
// La gouttière
if ( IsSet($_GET['GUTTER']) and ($_GET['GUTTER'] > -1)) {$Gutter = $_GET['GUTTER'];}
else {$Gutter = 6;}
// La qualité
if ( IsSet($_GET['QUALITY']) and ($_GET['QUALITY'] > -1)) {$Quality = $_GET['QUALITY'];}
else {$Quality = 40;}
// Calcul de la taille de l'image
// Cette police est particulièrement bien adaptée à cette tâche
$Font = "Seawek.ttf"; // Nom complet : Seawave Extended Keyset (TrueType)
$Hauteur = $TaillePolice;
$Pos = $Gutter;
$HauteurMax = 0;
for ($i=0; $i<$NbLettres; $i++)
{
$Angle = rand(-$MaxAngle,$MaxAngle);
$InfoRect= ImageTTFBbox($TaillePolice, $Angle, $Font, $Text[$i]);
$LargeurCar1 = $InfoRect[2]-$InfoRect[6];
$LargeurCar2 = $InfoRect[4]-$InfoRect[0];
if ($LargeurCar1 > $LargeurCar2) {$LargeurCar = $LargeurCar1;} else {$LargeurCar = $LargeurCar2;}
$HauteurCar1 = $InfoRect[1]-$InfoRect[5];
$HauteurCar2 = $InfoRect[3]-$InfoRect[7];
if ($HauteurCar1 > $HauteurCar2) {$HauteurCar = $HauteurCar1;} else {$HauteurCar = $HauteurCar2;}
if ($HauteurCar > $HauteurMax) {$HauteurMax=$HauteurCar;}
if ($InfoRect[6] > $InfoRect[0]) {$OffsetX = $InfoRect[0];} else {$OffsetX = $InfoRect[6];}
if ($InfoRect[7] > $InfoRect[5]) {$OffsetY = $InfoRect[5];} else {$OffsetY = $InfoRect[7];}
$aDatas[] = array($Pos, $Angle, $LargeurCar, $HauteurCar, $OffsetX, $OffsetY);
$Pos = $Pos + $LargeurCar;
}
$Largeur = $Gutter + $Pos + $Gutter;
$Hauteur = $Gutter + $HauteurMax + $Gutter;
// Création de l'image
$Image = ImageCreateTrueColor($Largeur,$Hauteur);
// Création des couleurs
$CoulFond = ImageColorAllocate($Image, $RougeFond, $VertFond, $BleuFond);
$CoulLettres = ImageColorAllocate($Image, $RougeLettres, $VertLettres, $BleuLettres);
$CoulCadre = ImageColorAllocate($Image, $RougeCadre, $VertCadre, $BleuCadre);
// Remplissage du fond
ImageFilledRectangle($Image, 0, 0, $Largeur-1, $Hauteur-1, $CoulFond);
// Traçage du cadre si nécessaire
if ($IsCadre) {ImageRectangle($Image, 0, 0, $Largeur-1, $Hauteur-1, $CoulCadre);}
// Ajout du texte
$Pos = $Gutter;
for ($i=0; $i<$NbLettres; $i++)
{
ImageTTFText($Image, $TaillePolice, $aDatas[$i][1], $Pos-$aDatas[$i][4], (($Hauteur - $aDatas[$i][3])/2)+$Gutter-$aDatas[$i][5], $CoulLettres, $Font, $Text[$i]);
$Pos = $Pos + $aDatas[$i][2];
}
// Affichage de l'image
ImageJpeg($Image,NULL,$Quality);
ImageDestroy($Image);
//================================ END of FILE =================================
?>
Conclusion
Voila une fonction puissante mais néanmoins facile à mettre enn oeuvre qui ravira tous les amateurs de sécurité. Explorez bien les possibilités de la fonction en testant les nombreux paramètres ! Bonne utilisation, BlueMan. (http://www.blueman.name/me_contacter.php)
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
probleme imagecreate et imagesetpixel [ par Celtic_fr ]
voila ce que j'obtient ^^, ce n'est pas une image, pourtant mon php_gd2 est activé.‰PNG IHDRdd Œ}Ç PLTEÿÿÿÿ
PNG et transparence [ par BTAJV ]
Bonjour tout le monde,Voila je suis en plein création d'un site crée qui servira a créer des signature pour un jeux video mais j'ai un probleme de tra
Caractères accentués avec ImageTTFText ? [ par bibos ]
Bonjour,Je viens de me mettre à la génération d'images en PHP, et j'ai un premier problème sur lequel je bute depuis 24h...Et ça me parait tellement b
Tableau et image en PHP [ par marchepied ]
Bonjour, je suis plus que novice en PHP et je suis face à un problme que je n'arrive pas à résoudre. Je cherche à créer une base de donnée qui contien
A la recherche d'idées ! ... [ par LocalStone ]
Salut à tous, Alors voilà, je me suis lancé dans le codage d'un forum dont la caractéristique principale est une gestion avancée des images (par exemp
Header PNG louche? [ par MAsterC ]
Salut à tous!dans mon index en tête j'ai mis ceci comme Header:header ("Content-type: image/png");Biensur apres.. avec ce code nous serons
encore un prob easyphp 1.6 - 1.7 [ par Pretender ]
Salut,donc jai installé easyphp1.7 et le problème que j'ai maintenant est que:j'ai le code suivant:<?php include("config.php");?><html><
Comment calculez le nombre d'affichage d'une image sur un site [ par amatrix ]
Au fait c'est pour par exemple afficher mon logo sur un autre site et savoir combien de fois celui-ci est afficher grace a une url de l'image du styl
Comment choisir la couleur de la bordure? [ par Linuss ]
Bonjour à tous, Voilà je viens de "finir" (bah oui entre guillimets, sinon je n'aurais pas de pb avec ^^ et qui n'est, je l'avoue, pas entierement de
écrire sur une image [ par jubeau ]
Bonjour, j'essaye désepérement d'écrire sur des images...dans le but de mettre en place sur mon site des générateurs rigolos, et éventuellement des gé
|
Téléchargements
Logiciels à télécharger sur le même thème :
|