Geschrieben von laz am 20.11.2004, 20:32

Also bei vielen Seiten hat man ja das Problem,das man z.B. das Menü mit Grafiken machen will.Nun ist es aber umständlich,jeden Button einzeln am PC zu entwerfen und dann zu speichern,wenn die Buttons alle das gleiche Aussehen haben sollen.
Eine Lösung bietet da PHP mit der GD-Library:

Zuerst braucht man einen Header,damit der Browser weiß,dass es sich um ein Bild handelt (meine Datei heißt hier button.php):
header ("Content-type: image/png");
Dann erstellt man ein leeres Bild:
$lenge=150;
$hoehe=30;
$bild=imagecreate($lenge, $hoehe);
$hintergrund=imagecolorallocate($bild ,255, 255, 255);

Als nächstes holen wir den Text,der nachher auf dem Button sein soll,mittels Get-Methode:
$text=$_GET['text'];

Danach noch die Farbe.Damit wir sie nicht extra in den Einzelfarben eingeben müssen,können wir die Funktion
function vonhex($string){
GLOBAL $bild;
sscanf($string, "%2x%2x%2x", $rot, $gruen, $blau);
return imagecolorallocate($bild,$rot,$gruen,$blau);
}
verwenden.
Das heißt,nachher nur muss man nur noch vonhex('xxxxxx'); //xxxxxx steht für eine Farbe im Hex-System verwenden:
$farbe=vonhex('0000ff');
Jetzt können wir den Text in das Bild reinschreiben:
imagestring($bild,1,x,y,$text,$farbe)
Wobei $bild für das Bild steht,in das der String geschrieben wird,1 der GD-interne Font-Type (mann kann Zahlen von 1-5 einsetzen).
X und Y stehen natürlich für die Startkoordinaten des Strings.$text ist der Text,den wir zuvor per Get-Methode inkludiert haben.Und $farbe dürfte sich von selbst erklären.
Nun ist das Bild eigentlich fertig,wir müssen es nur noch generieren.
imagePNG($bild);

Die Buttons kann man nun so generieren: Einfach die Datei button.php?text=hallo aufrufen.

Natürlich kann man auch eine Bild-Vorlage verwenden:
Z.B mit der Funktion
imagecreatefrompng($dateiname);
So kann man zum Beispiel ein Hintergrundbild,das bei jedem Button gleich sein soll,reinladen und auf diesem Hintergrund den Text schreiben.

Außerdem kann man die Farbe noch dynamisch bestimmen,oder auch einzelne Koordinaten in der Url übergeben,wenn einer dazu mehr wissen möchte,einfach ne PN schreiben ;)

Ach ja:Ich hoff mal,dass ich hier keine (Schreib-)Fehler reingemacht hab.
Den Code funktioniert bei mir näHmlcih einwandfrei ;)

Bewertung Anzahl
6
80,0 %
4 Bewertungen
3
20,0 %
1 Bewertungen