Gå til innhold

Hvordan lage buet tekst vha. GD?


Anbefalte innlegg

Videoannonse
Annonse

Det virker ikke som GD kan tegne skrå tekst.

 

Her er noe jeg satt å fikla med i går, men ikke fikk til å virke. Etter en kjapp tur innom php.net viste de seg at sin bruker radianer, mens jeg brukte grader...

 

<?php
error_reporting(E_ALL | E_STRICT);
if(!isset($_GET['noheader'])) header('Content-Type: image/png');

function imagecurvedstring($image, $font, $x, $y, $string, $color, $radius, $start, $end){
	$len = strlen($string);
	$dist = ($start - $end) / $len;
	for($i = 0; $i < $len; $i++){
		imagechar($image, $font, $x + sin(deg2rad($start + ($dist * $i))) * $radius, $y + cos(deg2rad($start + ($dist * $i))) * $radius, $string[$i], $color);
	}
}

$im = imagecreate(500, 500);
$bg = imagecolorallocate($im, 0, 0, 0);
$black = imagecolorallocate($im, 0, 255, 0);
imagecurvedstring($im, 5, 250, 250, 'FOOBAR', $black, 200, 270, 90);
imagepng($im);
imagedestroy($im);
?>

Resultat:

post-79295-1196689398_thumb.png

Lenke til kommentar
<?php
error_reporting(E_ALL | E_STRICT);
if(!isset($_GET['noheader'])) header('Content-Type: image/png');

function imagecurvedstring($image, $size, $x, $y, $color, $font, $string, $radius, $start, $end, $reversed = false){
	$len = strlen($string);
	$dist = ($start - $end) / $len;
	for($i = 0; $i < $len; $i++){
		imagettftext($image, $size, $start + ($dist * $i) + ($reversed ? 180 : 0), $x + sin(deg2rad($start + ($dist * $i))) * $radius, $y + cos(deg2rad($start + ($dist * $i))) * $radius, $color, $font, $string[$i]);
	}
}

$im = imagecreate(500, 500);
$bg = imagecolorallocate($im, 0, 0, 0);
$black = imagecolorallocate($im, 0, 255, 0);
imagecurvedstring($im, 16, 250, 250, $black, './HURTM___.TTF', 'FOOBAR', 200, 0, 180, true);
imagepng($im);
imagedestroy($im);
?>

post-79295-1196699156_thumb.png

Lenke til kommentar

Se der ja! Kjempestilig itsmebth. Har ikke triognometrien så friskt i minnet at jeg forstår logikken 100%, men det funker jo. *Imponert* =)

 

Jeg sa tidligere:

Den som kommer med en løsning skal få en premie i posten :p

Så om du vil ha en overaskelse i posten så PM adressen din til meg så skal jeg sende :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...