WRInaute accro
Bonjour,
Partage de ressources sans prétention.
Un client avait sa newsletter qui arrivait en vrac, particulièrement chez Gmail, il m'a demandé de prendre sa newsletter et d'en faire 1 seule image, j'ai donc commencé le code, celui que je donne superpose 1 image sur 1 image background et ajoute 2 textes.
demo : -http://tinyurl.com/d86wh9z
pour l'utiliser de votre coté, il vous faut télécharger la fonte Arial (arial.ttf), elle est free sur le net, vous pouvez bien sur tuliser d'autres fontes
Partage de ressources sans prétention.
Un client avait sa newsletter qui arrivait en vrac, particulièrement chez Gmail, il m'a demandé de prendre sa newsletter et d'en faire 1 seule image, j'ai donc commencé le code, celui que je donne superpose 1 image sur 1 image background et ajoute 2 textes.
demo : -http://tinyurl.com/d86wh9z
pour l'utiliser de votre coté, il vous faut télécharger la fonte Arial (arial.ttf), elle est free sur le net, vous pouvez bien sur tuliser d'autres fontes
Code:
<?php
// mettez ici votre image de fond
$fichier_source = "fond.jpg";
// envoie l'image a superposer sur le serveur
if(!empty($_POST['up'])) {
extract($_POST);
$userfile = $_FILES["userfile"]["tmp_name"];
if (!move_uploaded_file($userfile, $_FILES["userfile"]["name"])) {
print("La copie du fichier $userfile n'a pas réussi...<br />\n"); }
// recupere le nom de l'image
$fichier_copy = $_FILES["userfile"]["name"];
// 2 fonctions ImageCreateFromJpeg)
$im_source = ImageCreateFromJpeg ($fichier_source);
$im_copy = ImageCreateFromJpeg ($fichier_copy);
// on calcule la largeur de l'image qui va être copiée
$larg_destination = imagesx ($im_source);
// calcule la largeur
$larg_copy = imagesx ($im_copy);
// calcule la hauteur
$haut_copy = imagesy ($im_copy);
// calcul la position sur l'axe des abscisses
$x_destination_copy = $larg_destination - $larg_copy;
// excecute la superposition
imageCopyMerge ($im_source, $im_copy, 280, 280, 0, 0, $larg_copy, $haut_copy, 100);
Imagejpeg ($im_source, 'final1.jpg');
// creer l'image
$image = imagecreatefromjpeg('final1.jpg');
$text = $_POST['texte'];
$prix = $_POST['texte1'];
// Remplacez le chemin par votre propre chemin de police
$font = 'arial.ttf';
$grey = imagecolorallocate($image, 128, 128, 128);
$black = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
/* ajout texte haut */
// ce bout de code c'est pour placer le texte margé a partir de la droite
for($i=0; $i<strlen($text); $i++)
{
$dimensions = imagettfbbox(20, 0, $font, substr($text,$i,1));
$total_width+=($dimensions[2]);
}
$total = 680 - $total_width;
$total1 = $total +1;
// Ajout d'ombres au texte
imagettftext($image, 20, 0, $total1, 261, $grey, $font, $text);
// Ajout du texte
imagettftext($image, 20, 0, $total, 260, $black, $font, $text);
/* ajout texte bas */
// Ajout d'ombres au texte
imagettftext($image, 25, 0, 292, 627, $grey, $font, $prix);
// Ajout du texte
imagettftext($image, 25, 0, 290, 625, $red, $font, $prix);
Imagejpeg ($image, 'final.jpg');
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<INPUT TYPE="hidden" name="up" value="1">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000">
<input type="hidden" name="envoie" value="1">
<input name="userfile" type="file" size="30"> (image de 500*300 px en .jpg pour l'exemple)
<br /> <br />
texte 1
<input type="text" name="texte" size="50" value="<?php echo $_POST['texte']; ?>" />
<br />
texte 2
<input type="text" name="texte1" size="50" value="<?php echo $_POST['texte1']; ?>" />
<br /><br />
<INPUT TYPE="submit" VALUE="Générer l'image">
</FORM>
<br />
<?php
if(!empty($_POST['up']))
{
?>
<img src="final.jpg" />
<?php } ?>