[RESOLU] Afficher un texte sur une image

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

03 déc. 2015, 23:21

Il faut peut être lire + attentivement ce que tu récupères, et pas juste copier-coller ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 687 Messages

04 déc. 2015, 00:18

en effet.
je viens de modifier et pas d'affichage de l'image... :(
<?php
// Charge le cachet et la photo afin d'y appliquer le tatouage numérique
$im = imagecreatefromjpeg('images/construct.jpg');

// Tout d'abord, nous créons un cachet manuellement grâce à GD
$stamp = imagecreatetruecolor(100, 70);
imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
$im = imagecreatefromjpeg('images/construct.jpg');
imagestring($stamp, 5, 20, 20, 'test', 0x0000FF);
imagestring($stamp, 3, 20, 40, '(c) 2007-9', 0x0000FF);

// Définit les marges du cachet et récupère la largeur et la hauteur du cachet
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

// Fusionne le cachet dans notre photo avec une opacité de 50%
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50);

// Sauvegarde l'image dans un fichier et libère la mémoire
imagepng($im, 'photo_stamp.png');
imagedestroy($im);

?>

Mammouth du PHP | 687 Messages

04 déc. 2015, 11:15

Bonjour,

Comment fait-on pour afficher l'image par la suite une fois quelle est fusionnée?
un echo?

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 déc. 2015, 15:20

Comment fait-on pour afficher l'image par la suite une fois quelle est fusionnée?
un echo?
Tu l'enregistres qq part sur ton serveur et tu l'insère dans ton mail comme tu aurais fait pour une image classique.
Soit en mettant le lien vers l'image que tu auras mis dans un répertoire public, soit en embeddant l'image dans le mail (via une librairie d'envoi d'email c'est plus simple).
L'avantage si tu embed l'image dans le mail c'est que tu peux supprimer le fichier généré juste après l'avoir envoyé.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 687 Messages

05 déc. 2015, 00:52

Merci.

Du coup j'affiche via la balise <img src="image.php?text=blabla">
Par contre savez-vous comment je peux changer la couleur de mon texte car quoi que je fasse c'est soit bleue, soit blanc.
Je souhaite également que mon texte proviennent d'une $_GET['montexte'] et qu'il soit transformé en img.

Questions :
- est-ce correct : $txt = $_GET['montexte'];
- $_POST['montexte'] ==> contiendra par exemple :
<div><strong>Ma maison...<br> TEST</strong></div>
est-ce que le HTML sera bien interprété donc si <br> alors saut de ligne?

Merci par avance.
COrdialement

le code :
<?php

header('Content-type: image/gif');   
/* * *******************************  * Parametre  * ********************************  */ 
$largeur = 600; /* longueur de l'image */ 
$hauteur = 600; /* hauteur de l'image */ 
$image = imagecreate($largeur, $hauteur); 
/* Background */ 
$image = imagecreatefromgif("carte2016/Carte.gif");
/* Couleur du text */ 
$couleurTxt = imagecolorallocate($image, 19,57,92);
/* texte à mettre dans l'image */ 
$txt = "ocdocde,ciod,eci,eic,doi,cid,ci,ei<br>kd,zi,zjindjzndze,"; 
$txt = "ocdocde,ciod,eci,eic,doi,cid,ci,ei<br>kd,zi,zjindjzndze,"; 
/* Taille du texte */ 
$font = 3; 
/* Hauteur et largeur des caratères */ 
$largeurCaractere = ImageFontWidth($font); 
$hauteurCaractere = ImageFontHeight($font); 
/* Longueur du texte (taille caratère X nombre de caractère) */ 
$largeurTxt = $largeurCaractere * strlen($txt); 
/* Recherche de la position horizontale centrale pour centrer le texte */ 
$positionCentreHor = ceil(($largeur - $largeurTxt) / 2); 
/* Recherche de la position horizontale centrale pour centrer le texte */ 
$positionCentreVer = 400; 
/* Ajout du texte au centre de l'image */ 
$image_string = ImageString($image, $font, $positionCentreHor, $positionCentreVer, $txt, $couleurTxt); 
/* Création de l'image */ 
imagegif($image); 

?>