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);
}Merci d'avance pour vos réponses