Aller au contenu

Alignement à droite d'un texte dans une image


Poppy

Sujets conseillés

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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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