Wie kann ich einen Text in ein Bild schreiben und dieses dann ausgeben?
Ihr habt bestimmt schon Bilder gesehen, welche einen dynamischen Text enthalten. Dies könnte das aktuelle Datum, ein lustiger Spruch, die IP des Users oder irgendwas anderes sein. Ich will euch nun zeigen, wie ihr auf ein Png Bild einen Text schreibt und diesen ausgebt. Erstellt einen kleinen Button, bspw. 88x31 Pixel groß im PNG-Format und speichert ihn in einem Verzeichnis ab. Nun schreibt folgenden Code in eine Datei und speichert sie ins gleiche Verzeichnis:
|
PHP-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
<?php
$image_file='button_rohling.png';
$image=imagecreatefrompng($image_file);
$textcolor=imagecolorallocate($image,0,0,0);
$text='Hello world!';
imagestring($image,2,4,16,$text,$textcolor);
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
|
Nun erstmal zur Erklärung, warum ich PNG als Format genommen habe. Erstens beinhaltet das PNG Format die Vorteile aus JPEG und GIF. Die Bilder können wie in JPEG komprimiert werden, der Qualitätsverlust bleibt jedoch aus, oder ist nur sehr gering. Außerdem beseht die Möglichkeit Transparenz in das Bild zu bringen, wie bei GIF. Das GIF Format bedarf einer Lizenz und wurde daher aus der GD-Bibliothek, welche wir für das Erstellen und Bearbeiten von Bildern brauchen , herausgenommen. Ab Version 1.6 wurde das GIF Format durch PNG ersetzt. Habt ihr eine Bibliothek unter Version 1.6, so könnt ihr auch das GIF Format noch nutzen. Die Befehle bleiben auch bei den anderen Formaten im Grunde gleich, nur ein paar Kleinigkeiten ändern sich. Jetzt die Erklärung des Codes:
In der Variable "$image_file" geben wir den Dateinamen unseres Bildes an (musst du an deinen anpassen). Dann wird mit "imagecreatefrompng" ein neues Bild von dem bestehenden PNG erstellt und ein Zeiger darauf in "$image" gespeichert. Dem Befehl übergeben wir den Dateinamen des Bildes, den wir in einer Variable gespeichert haben. Nun erstellen wir eine Variable "$textcolor" und weisen mit "imagecolorallocate" die Farbe "Schwarz" zu. Der Befehl erfordert als ersten Parameter das Image, danach drei Byte Werte (Rot, Grün, Blau, jeweils von 0 bis 255). In der Variable "$text" speichern wir nun unseren Text, den wir auf das Bild packen wollen. Mit "imagestring" schreiben wir den Text auf unser Bild. Der erste Parameter ist wieder das Image, auf welches geschrieben werden soll. Der zweite gibt die Schriftgröße an. Mit dem dritten und vierten wird die Position in Pixeln angegeben. Die obere link Ecke des Bildes stellt hierbei den Punkt (0|0) da. Nun senden wir einen Header, damit der Browser auch weiß, dass diese PHP Datei keinen HTML Code, sondern ein Bild von Typ PNG ausliefert. Dann wird das Bild mit "imagepng" ausgegeben. Der erste Parameter gibt wieder das Bild an. Ihr könntet mit Komma getrennt noch einen zweiten Parameter, einen Dateinamen als String angeben. Dann würde das Bild nicht ausgegeben, sondern als Bild unter diesem Dateinamen gespeichert werden. Zum Schluss geben wir den durch das Bild belegten Speicher mit "imagedestroy" wieder frei.
Die PHP Datei ist nun wie ein Bild zu gebrauchen. Wenn ihr die Datei bspw. "bild.php" genannt habt, könnt ihr sie so in euer Dokument einfügen:
|
Quellcode
|
1
|
<img src="bild.php" alt="" />
|
Den Text könnt ihr nun auch durch andere Informationen, bspw. auch aus einer Datenbank, ersetzen.
Quelle:
Klick hier