Ecrire plusiseurs ligne sur une image

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ecrire plusiseurs ligne sur une image

Re: Ecrire plusiseurs ligne sur une image

par Invité » 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 ;)

Ecrire plusiseurs ligne sur une image

par shelko » 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