Gå til innhold

Hvordan lage buet tekst vha. GD?


Anbefalte innlegg

Videoannonse
Annonse
Skrevet

Heisann, hvordan tenker du?

Tror det letteste vil være og bruke imagestring() til dette med og legge flere etterhverandre (dersom det er lik lengde på all tekst du legger inn),

Ellers må du nokk over til skikkelig proffesjonell kunnskap.

Skrevet

Tenkte å skrive slik

curved-text-1.jpg

 

Et og et tegn med forskjellig angle? Ja det bør vel fungere om tesksten er like lang.

Tenkte på tekst med forskjellig lengde ja

Skrevet

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

Skrevet
<?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

Skrevet

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

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å
×
×
  • Opprett ny...