Ecrire un texte en cercle sur une image

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 878 fois - Téléchargée 16 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

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
Modérateur
Dernière intervention
30 juillet 2012
30
ton navigateur, c'est quoi ??

t'as oublie de le mettre dans une balise img.
jadu
Messages postés
225
Date d'inscription
mercredi 26 juillet 2006
Statut
Membre
Dernière intervention
16 août 2018

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

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
Modérateur
Dernière intervention
30 juillet 2012
30
j'en ai plus depuis une bouteille de cabernet et 40 clopes

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.