PHP Grafik

Mew

Erfahrenes Mitglied
Hallo liebe Leute ^^

ich habe mit PHP eine Grafik erstellt und das hat auch geklappt. Nun habe ich einen Text rauf getan was auch funktioniert. Jetzt meine Frage: Kann man dem Text einen Border bzw. Rahmen von 1px geben?
 
hmm das verstehe ich irgedwie nicht leider ^^ wie würde das denn in diesen code gemacht werden z.B.?

header("Content-type: image/png");
$string = $_GET['user'];
$im = imagecreatefrompng("images/userbar.png");
$orange = imagecolorallocate($im, 248, 248, 248);
$px = (imagesx($im) - 80);
imagestring($im, 2.6, $px, 4.8, $string, $orange);
imagepng($im);
imagedestroy($im);
 
PHP:
header("Content-type: image/png");
$string = $_GET['user'];
$im = imagecreatefrompng("images/userbar.png");
$red   = imagecolorallocate($im, 255,   0,   0);
imagerectangle($im, 10,10,60,60, $red);
$orange = imagecolorallocate($im, 248, 248, 248);
$px = (imagesx($im) - 80);
imagestring($im, 2.6, $px, 4.8, $string, $orange);
imagepng($im);
imagedestroy($im);

Wobei du halt mit der Farbe und mit der Größe des Rechteckes basteln musst, damit es dann halt richtig passt!
 
hmm das ist aber doof, es soll ja ein rahmen um die schrift bzw. den text sein und nicht ein rechteck rahmen geht das nicht noch anders?
 
PHP:
<?php
$string = $_GET['user'];
$im = imagecreatefrompng("12.png");
$red   = imagecolorallocate($im, 255,   0,   0);
$string_laenge=strlen($string);
imagerectangle($im, (imagesx($im) - 90),3.8,(imagesx($im) - 80+($string_laenge*7)),20, $red);
$orange = imagecolorallocate($im, 248, 248, 248);
$px = (imagesx($im) - 80);
imagestring($im, 2.6, $px, 4.8, $string, $orange);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>

Das wär die leichteste Methode, da aber jeder Buchstabe ne andere Weite hat kann es passieren das die Box rechts sehr lang wird. Also wenn du das genauer haben willst, musste da ne Case Anweisung schreiben, für jedes einzelne Zeichen mit seiner jeweiligen Länge in Pixeln!
 
Hallo liebe Leute ^^

ich habe mit PHP eine Grafik erstellt und das hat auch geklappt. Nun habe ich einen Text rauf getan was auch funktioniert. Jetzt meine Frage: Kann man dem Text einen Border bzw. Rahmen von 1px geben?

Wenn du einen Rahmen um jeden Buchstaben (wie bei deinem Avatar Pic der schwarze Rahmen/Kontur), so hab ich es verstanden, haben willst versuch es doch mal die Schift einmal eine nummer Größer zu zeichenen (inder Rahmenfarbe) und dann die eigentliche Schift/String in der eigentlichen Schriftfarbe.
 
Ich glaube Mew meint eher eine Kontur um die Schrift und keinen wirklichen Rahmen.
Und das ist m. E. nach nicht ganz so einfach möglich...

/edit:
Da war einer schneller und auf die Idee wär ich nun wirklich nicht gekommen...
Man muss wahrscheinlich ein wenig mit der Positionierung kämpfen, aber es sollte funktionieren.
 
genauso meine ich das^^ hmm ich kriege das irgendwie nicht hin mit der zweiten schrift ein pixel größer?

mein code ist so:

PHP:
<?php

header("Content-type: image/png");
$string = $_GET['user'];
$im = imagecreatefrompng("images/userbar.png");
$weiss = imagecolorallocate($im, 248, 248, 248);
$px = (imagesx($im) - 80);
imagestring($im, 2.6, $px, 4.8, $string, $weiss);
imagepng($im);
imagedestroy($im); 

?>
 
Da müssteste die y-Koordinate ändern.
Ich habs jetzt mal anders gemacht, da haste gleich nen Text Kasten!
PHP:
$string = $_GET['user'];
$im = imagecreatefrompng("http://www.tutorials.de/forum/images/userbar.png"); 
$red   = imagecolorallocate($im, 255,   0,   0);

$orange = imagecolorallocate($im, 248, 248, 248);
$px = (imagesx($im) - 80);
$textgrosse=18;
$txt=imagettfbbox( $textgrosse , 0, "http://www.emc-zurich.ch/f/timesf", $string);
imagettftext($im, $textgrosse, 0, (imagesx($im) - 20 -($txt[2]-$txt[0])),30, $orange, "http://www.emc-zurich.ch/f/timesf", $string);

$red   = imagecolorallocate($im, 255,   0,   0);
imagerectangle($im, (imagesx($im) - 30 -($txt[2]-$txt[0])),2,(imagesx($im)-10),($txt[3]+40), $red); 
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

Hier ist dann alles drin was du haben wolltest.
Erklärungen:
- imagettftext
- imagettfbbox
 
Zurück