À l'aide de la fonction imagettftext avec plusieurs lignes? Quiconque fait cela avant?
Je suis de la création de texte transparente -> images png avec php et c'est très bien. Le seul problème est que je veux avoir la possibilité d'avoir le texte de word wrap en raison d'une largeur fixe.. Ou, sinon, d'être en mesure d'insérer des lignes de rupture dans le texte. Quelqu'un avait une exp de faire ceci? voici mon code...
<?php
$font = 'arial.ttf';
$text = 'Cool Stuff! this is nice LALALALALA LALA HEEH EHEHE';
$fontSize = 20;
$bounds = imagettfbbox($fontSize, 0, $font, $text);
$width = abs($bounds[4]-$bounds[6]);
$height = abs($bounds[7]-$bounds[1]);
$im = imagecreatetruecolor($width, $height);
imagealphablending($im, false);
imagesavealpha($im, true);
$trans = imagecolorallocatealpha($im, 255, 255, 255, 127);
//Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($im, $black);
imagefilledrectangle($im, 0, 0, $width, $height, $trans);
//Add the text
imagettftext($im, $fontSize, 0, 0, $fontSize-1, $grey, $font, $text);
imagepng($im, "image.png");
imagedestroy($im);
?>
OriginalL'auteur ionfish | 2011-05-29
Vous devez vous connecter pour publier un commentaire.
Essayer cette
J'espère que cela aide les autres comme je pense que sa toooooo tard pour vous...
Cela m'a aidé aujourd'hui, merci!
OriginalL'auteur Genius in trouble
Simplement exploser le texte sur des espaces d'obtenir un tableau de mots, puis commencez à construire des lignes en boucle à travers les mots de tableau, le test de l'ajout de chaque nouveau mot via imagettfbbox pour voir si il crée une largeur qui dépasse la maxwidth vous définissez. Si elle le fait, démarrer le mot suivant sur une nouvelle ligne. Je trouve plus facile de simplement créer une nouvelle chaîne de caractères spéciaux les sauts de ligne personnages ajoutés, et puis juste exploser cette chaîne de nouveau pour créer un tableau de lignes, chacune de qui vous allez écrire sur la dernière image séparément.
Quelque chose comme ceci:
Où le caractère est le caractère de saut de ligne.
au lieu de parcourir les lignes de simplement ajouter PHP_EOL quand la ligne est trop longue, comme suit:
if ($lineWidth < $maxLineWidth) { $newText .= $value . ' '; } else { $newText .= PHP_EOL . $value; }
OriginalL'auteur Drew
De toutes les réponses postées j'ai aimé Génie en difficulté's le meilleur, mais il ajoute juste un saut de ligne tous les 15 personnages, plutôt que de laisser le texte de "flux", comme il le ferait dans un cadre moderne de traitement de texte avec la variable de la ligne de longueurs selon le choix de la police & quels sont les caractères utilisés (par exemple, L minuscule prend moins d'espace horizontal de majuscules W--l vs W).
Je suis venu avec une solution que j'ai publié en open source à https://github.com/andrewgjohnson/linebreaks4imagettftext
À utiliser il vous suffit de changer:
:
Voici un exemple de l'avant & après avec un long morceau de texte:
OriginalL'auteur Andrew G. Johnson