Ecrire un texte en cercle sur une image

1/5 (54 avis)

Snippet vu 18 724 fois - Téléchargée 18 fois

Contenu du snippet

suite a une demande sur le forum, je vous poste cette fonction
http://www.phpcs.com/infomsg_ECRIRE-ROND_1187165.aspx#3

elle permet d'ecrire un texte en cercle sur une image.

Source / Exemple :


<?php

function sq($x){ return $x * $x; }
function convrad (){ return pi() / 180; }
function convdeg (){ return 180 / pi(); }
/**

  • @param $im l'image
  • @param $color la couleur
  • @param $font la police
  • @param $size la taille
  • @param $r le rayon du cercle
  • @param $phrase la phrase a afficher
  • @param $cx le centre du cercle (abscisse)
  • @param $cy le centre du cercle (ordonnee)
  • @param $phy le decalage
  • /
function circleWrite($im, $color, $font, $size, $r, $phrase, $cx, $cy, $phy = 180){ // combien de degres entre deux lettres ? $tab = imagettfbbox($size , 0 , $font , 'X' ); $lenX = $tab[4] - $tab[0]; $lenY = $tab[5] - $tab[1]; $len = sqrt(sq($lenX) + sq($lenY)); $step = atan($len / $r) * convdeg(); $nbrLettres = strlen($phrase); for ($i=0;$i<$nbrLettres;$i++){ $angle = $phy + $i * $step; $angleRAD = $angle * convrad(); $x = $cx + cos($angleRAD)*$r; $y = $cy + sin($angleRAD)*$r; imagettftext($im, $size, 270 - $angle , $x, $y, $color, $font, $phrase[$i]); } } $dx = 200; $dy = 200; $im = imagecreate($dx,$dy); $white = imagecolorallocate($im, 255,255,255); $black = imagecolorallocate($im, 0,0,0); $font = '/usr/share/fonts/truetype/freefont/FreeMono.ttf'; circleWrite($im, $black, $font, 15, min($dx / 3, $dy / 3), 'salut c\'est moi', $dx / 2, $dy / 2); header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>

A voir également

Ajouter un commentaire Commentaires
pizzatoy Messages postés 2 Date d'inscription dimanche 5 juillet 2009 Statut Membre Dernière intervention 27 novembre 2009
27 nov. 2009 à 10:57
JADU : essaie avec le code ci-dessous :
---------------------------------------

Salut coucou747,

non, j'ai tout essayé, même avec les balises img, dans ce genre :
echo '< img alt="" src="' . $imageUrl . '" />';
j'ai cherché au niveau du caractère avec :
html_entity_decode('salut c est moi',null, 'utf-8')
... rien à faire...

Cependant j'ai trouvé sur http://www.phpfreaks.com/forums/index.php?topic=108566.0
ceci:

<?php
header("Content-type: image/png");
$im = imagecreate(400,200);
$white = imagecolorallocate($im, 255,255,255);
$black = imagecolorallocate($im, 0,0,0);
$cx 200;$cy 100;$cr = 80;
if (isset($_REQUEST["text"])) {$text = $_REQUEST["text"];}
else { $text = 'hello there';}
$length = strlen($text);
$degDelta = 360 / $length;
if ($length > 0) {$color = $black;
for ($x = 0; $x < $length; $x++) {
// Circular Text
$AX = $cx - cos(deg2rad($degDelta * $x)) * $cr;
$AY = $cy - sin(deg2rad($degDelta * $x)) * $cr;
imagettftext($im, 20, -($degDelta * $x + $degDelta / 2)+90 , $AX, $AY, $color, 'ariblk.ttf', $text[$x]);
}
}
imagepng($im);
imagedestroy($im);
?>

ça marche sur mon serveur MavenHosting. J'ai juste changé le $font pour mettre une police que j'ai sur mon serveur. J'ai une image qui apparaît en ligne avec un texte en cercle comme ton image sur le descriptif. Cela juste avec du php.
Je vais maintenant l'adapter sur mon site www.pizzatoy.com pour créer des logos pour les pizzerias. A suivre...

D'après toi ça peut venir d'où le truc qui bloque avec ton code ? Je vais continuer à regarder de mon côté !
@+
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
26 nov. 2009 à 21:34
ton navigateur, c'est quoi ??

t'as oublie de le mettre dans une balise img.
jadu Messages postés 217 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 16 août 2018
26 nov. 2009 à 19:43
C'est joli, mais ça ne fonctionne pas pour toi (non plus :-D )car ce n'est pas du tout en rond !!!
pizzatoy Messages postés 2 Date d'inscription dimanche 5 juillet 2009 Statut Membre Dernière intervention 27 novembre 2009
26 nov. 2009 à 18:59
Bonjour à tous,

j'ai tenté de lancer la source sur mon hébergement MavenHosting et je me retrouve avec ce genre de réponse :

‰PNG  IHDRÈÈ_v³­PLTEÿÿÿŸŸŸ???ßßß___¿¿¿[ÇÊÔIDATxœí›ÁSÚ@Æ—ŽýŒØC+NŠjåt°M[ÆâØ#‘j=šVÔ?»°:•Äì&ûèØÙßE'„|,ïí{oß.Œi4F£Ñ<ÐÙðÈ5€P‹Äèb•Z$ ^©|`q-Ä9jô³æããɺ: NÆ—Ÿ P'Á˜ Œžœ šÔHE2F×Ú8R*’ažu¥.† Eøg?ó.°€Rƒ‡ £töÕ ÄŸžþ­gEíû8ˍò†Jãq‚øYŠWƒ™þÃé|’ÖhŽêžw+cCÄÈ<]ËŠpÇõ¥,•H–>–øPŽ„ïç&|/øt[N° |nW’"&WàBžèý!J‹€Cùá·@ù˜™f«HØ”M8V™éswÎã=\_\Š[ðC&ÒÖž›¬{ò"¬-1»8ü ä°ñ›ýÌ4­˜\¥©2›­9hÈT|ÿÖ ø«b`'eL›•Dâ̲ö Ü¿Tñqçޔ毎„É×*þŸL>¡”žÉåžßj €:#)_šX[±HË+Ü–1àD®%TŒPÖøV#0±©ß.ìL¯ÁÌP¢Lù î›Âߟ+§Á‹s‰d–aßnÊŸSó1ÖŽr> S2ùù‘ÇF`Œ\]€–¿°1¡Dµù„¹™ËrmŸš^€§5/L6pÓÞ<”_e<á]ªñ3ïU^b·—‚®WM£jø¹=$ŸºªÁ­ºhçÞãxFþë}‡‡Ñê"­çÓ–É¿±âŠæyÂâ a§[µKÚ£_Bð‰ÌAD£ÑŒŒµ`­€V$°LcLŽ<›(Ýt›ÁįKŒ}Ú@mbb/õ«‰­ˆºkÅ­ŸQï¶òZÆ‹Ôî"ÍbŸœ² …°F£ÑŒDìyˆÄîú0›.ÝbpÒ×P{ò`†N¢Šyò,;ûšì=TÁÄø8`mÚ"qÒkûŽ"ÖŽ¡uE*bt'"Ž¥•Éì•n~¿K µt"ŽÎÅzé„ß/µ,N<5<­Èh2á«6ŽŠ0Ï>Ëáš ЋPó# ×Ø-jsª Ýp¥V1R÷¥V©;oé³b G£êýëBwЧÁéîô`›z Íœ ûÄÑq²OypòQEú„ŸŒŠOݘû?˜Ëº„ž2`—;ª&Gs®k'sø%Gz<“žndÓcH¹Jƒ|¥˜‘wáÙ$ÃÓ;‹Ý]…?KÉÁŸõç0kS…™ÕÎj4F£Ñh4F£ÑŒ,~°Ù}+áq–•IEND®B`‚

Qu'est-ce donc !?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
3 oct. 2009 à 10:31
j'en ai plus depuis une bouteille de cabernet et 40 clopes
Afficher les 54 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.