Aller au contenu

Alignement à droite d'un texte dans une image


Sujets conseillés

Posté

Bonjour,

Je cherche à aligner un texte dans une image générée en PHP.

Or, je n'ai pas réussi à m'aider. Pouvez-vous m'orienter ?

Merci d'avance ^_^

Posté (modifié)

Ceci peut-il t'aider ?

<?php
class insert_text_to_image
{
function insert_text_to_image($imageSource, $text, $x_position, $y_position, $colorR, $colorG, $colorB, $font)
{
$this->source=$imageSource;
$this->text=$text;
$this->x_position=$x_position;
$this->y_position=$y_position;
$this->colorR=$colorR;
$this->colorG=$colorG;
$this->colorB=$colorB;
$this->x=0;
$this->y=0;
$this->font=$font;
}
function insert()
{
header ("Content-type: image/jpeg");
$image=imagecreatefromjpeg($this->source);
$this->x=imagesx($image);
$this->y=imagesy($image);
$colx = imagecolorallocate ($image,(int)$this->colorR,(int)$this->colorG,(int)$this->colorB);
$col = imagecolorallocate ($image,(int)$this->colorR,(int)$this->colorG,(int)$this->colorB);

if(!$image)
die("this image does not exist ! try a currect filename as a jpeg file .");
if($this->x_position<0 || $this->x_position>$this->x || $this->y_position<0 || $this->y_position>$this->y)
die("the x_position or y_position values are not currect. they must be smaller than image dimentions . ");

imagestring ($image,$this->font,$this->x_position,$this->y_position,$this->text,$col);
imagejpeg ($image, "", 100);
}
}
?>

Modifié par xpatval
Posté

La suite, car j'ai oublié l'appel à la classe:

<?php
$imagename="img/xxx.jpg";// ton image générée.
$string="le texte à placer";
$colorr=85; // de 1 à 255
$colorg=10; // idem
$colorb=250; // idem
$x_pos=50; // pour la position (à modifier)
$y_pos=380; // pour la position (à modifier)
$font=5;// selon ton humeur, de 1 à 5.

$ins=new insert_text_to_image($imagename, $string, $x_pos, $y_pos, $colorr, $colorg, $colorb, $font);
$ins->insert();
?>

xpatval

Posté

xpatval -> Si j'ai bien compris, ta classe permet d'afficher un texte dans une image, aux coordonnées spécifiées.

Et, si j'ai bien compris la demande de Poppy (titre+message), il aimerait pouvoir aligner son texte à droite.

Posté

Exact, il suffit de modifier les coordonnées (x et y), afin de positionner le texte DANS l'image, là où l'on veut...

xpatval

Posté

Oui, mais en utilisant imagestring, tu ne spécifies que les coordonnées de départ du texte, en partant de la gauche (ou j'ai raté un épisode).

Par exemple, si je spécifie une valeur X de 100, le texte commencera avec un décalage de 100 px sur la gauche de l'image, mais ne sera pas pour autant aligné à droite.

Posté

Euh... je vois pas où est le problème...

Ton image fait 100 px

-> 0 = me fais ecrire à gauche de l'image

-> 50 - longueur de mon texte = me fais ecrire au milieu de mon image

-> 100 - longueur de mon texte = me fais ecrire à droite de l'image

Non? Cela me parait logic ^_^

Portekoi

Posté

Ben la c'est chercher un peu la tite bête....

S'il utilise toujours la même taille de police, y a aucun soucis à faire un strlen($var)....

Et même s'il utilise une nouvelle taille, il n'est pas à 5 px prêt.....

:)

Portekoi

Posté

Merci pour vos réponses. Je cherche qqs choses de précis. C'est pour faire un emploi du temps avec une image en PHP, donc les données sont variables.

Je suis sûr que c'est possible, je l'ai déjà vu. Je cherche aussi de mon côté, si je trouve, je vous dis.

A plus tard ;)

  • 3 semaines plus tard...
Posté

Alors,

Etant intéressé par le truc, et n'ayant pas trouver de solution toute faite sauf celle de xpatval que je remercie d'avoir répondu, voilà ce que j'ai réussi à faire:

// Trouve la taille du texte
$bbox=imagettfbbox (12, 0, $police, $Text);
$xcorr=0-$bbox[6];
$TaillText=$bbox[2]+$xcorr;
// Trouve la taille de l'image
$TaillImage=imagesx($image);
//Calcule la position (Image-Texte) -10 de décalage éventuel à gauche
$new=($TaillImage-$TaillText)-10;
//Ecrie le texte
imagettftext($image, 12, 0, $new, 50, $noir, $police, $Text);

Le tout dans une image PHP déjà structurée.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...