Ecrire plusiseurs ligne sur une image

Eléphanteau du PHP | 15 Messages

21 avr. 2010, 18:03

Bonjour,
J'essaie de temps de trouver une solution pour écrire plusieurs lignes centrées en largeur et hauteur sur une image via imagettftext.
J'ai essayé de découper mon texte ligne par ligne en faisant un explode et de recalculer le centrage dynamiquement.
Mais je ne sais pas comment faire pour les écrire sur l'image car celà m'inscrit que le dernier.
Voici mon code :

Code : Tout sélectionner

$idbbp=$_POST['idbbp']; $req="SELECT * FROM bb_perso WHERE id_bbp='".$idbbp."'"; $query=mysql_query($req) or die (mysql_error()); $data=mysql_fetch_assoc($query); $largeur=$data['largeur']; $hauteur=$data['hauteur']-$_POST['size']; $xtempo=$data['x_saisie']+($largeur)/2; $ytempo=$data['y_saisie']+($hauteur)/2; $img='../bbperso/'.$_SESSION['pseudo_user'].'/img/'.$data['nom_ctn']; $ig='../bbperso/'.$_SESSION['pseudo_user'].'/img/'.trim($_POST['nom']).'.jpg'; $font='../font/'.trim($_POST['font']).'.ttf'; //creation taille réelle $texte=$_POST['saisie']; $size = floatval($_POST['size']); $box=imagettfbbox($_POST['size'], 0, $font, $texte); $larg=$box[2] - $box[0]; $haut=$box[1] - $box[7]; $x=$xtempo-($larg/2); $y=$ytempo-($haut/2)+($_POST['size']*2); if($larg<$largeur and $haut<$hauteur){ $tab=explode("\n", $_POST['saisie']); foreach($tab as $value){ $box=imagettfbbox($_POST['size'], 0, $font, $value); $larg=$box[2] - $box[0]; $haut=$box[1] - $box[7]; $x=$xtempo-($larg/2); $im=imagecreatefromjpeg($img); if(trim($_POST['color'])=='red'){$color=imagecolorallocate($im, 255, 0, 0);} elseif(trim($_POST['color'])=='green'){$color=imagecolorallocate($im, 0, 255, 0);} elseif(trim($_POST['color'])=='blue'){$color=imagecolorallocate($im, 0, 0, 255);} elseif(trim($_POST['color'])=='white'){$color=imagecolorallocate($im, 255, 255, 255);} else{$color=imagecolorallocate($im, 0, 0, 0);} imagettftext($im, $_POST['size'], 0, $x, $y, $color, $font, $value); imagejpeg($im, $ig, 100); $y=$y+$haut; } imagedestroy($im); }
Donc en gros mon soucis c'est qu'avec ce code s'il y a 3 ligne il m'affiche juste la dernière.
Merci d'avance pour vos réponses

Invité
Invité n'ayant pas de compte PHPfrance

22 avr. 2010, 02:02

En fait j'ai trouvé mon code était pas mal (les fleurs sont pas chères aujourd'hui) sauf que j'ai placé la création de mon image virege dans la boucle donc normal que j'ai juste les dernier tour.
J'espère que cela pourra servir à quelqu'un ;)