-
PHP - Teil 32 - Grafikgenerierung: Texte hinzufügen
23.11.2011 in PHP von daniel_koch
- Zum Downloadmanager hinzufügen
- PDF-Datei herunterladen
- Arbeitsmaterialien herunterladen
- Video
- Kommentare ansehen (0)
- Kategorie: PHP
- Erstellt mit Programmversion: PHP 5/6
- Kompatibel ab Programmversion: PHP 5
- Dateigröße (PDF): 1.3 MB
- Dateigröße (Arbeitsmaterial): 2 KB
- Bisherige Zugriffe: 84
Zum Downloadmanager hinzufügen PDF-Datei herunterladen (1.3 MB) Arbeitsmaterialien herunterladen (2 KB) Zugehöriges Video-Training ansehen
Tipp: Dieser Inhalt befindet sich auch auf der:
Lieber Gast …
… die Inhalte von PSD-Tutorials.de stehen nur registrierten Mitgliedern zur Verfügung. Damit wollen wir den Communitygedanken weiterführen. Als Mitglied trägst du - wenn auch nur im Kleinen - zum Puls der Community bei. Und nur so ist es möglich, weiterhin hochwertige Inhalte für alle bereitzustellen.
Vorteile der kostenlosen Mitgliedschaft
Mit der kostenlosen und schnell erledigten Registrierung erhältst du viele nachhaltige Vorteile, die wir dir hier in aller Kürze aufzeigen möchten:
- PSD steht für professionelles Know-how in den Bereichen Bildbearbeitung mit Photoshop, Fotografie, Webentwicklung, Layout- und Vektorbearbeitung, 3D-Bearbeitung mit Cinema 4D und Co.
- Über 2200 Tutorials mit druckbarer PDF-Datei und teilweise den zugehörigen Arbeitsmaterialien
- Mehr als 500 Video-Trainings als Stream zur Direktanzeige und zum Download
- Abruf von über 1000 Downloads zu Photoshop-Presets, 3D-Modellen, Grußkarten, Texturen & Co
- Zugriff auf ein sehr aktives Forum mit Antworten im Minutentakt
- Deine Daten sind sicher. Sie werden nicht weitergegeben! Die Mitgliedschaft kann jederzeit und ohne Aufwand wieder gelöscht werden.
Reinschnuppern als Gast
Niemand kauft gerne die Katze im Sack, auch wenn sie kostenlos ist. Wir haben eine Handvoll Tutorials und Video-Trainings ausgesucht, die du auch als Gast ohne Registrierung ansehen kannst. Gefallen sie dir, stehen dir nach der Registrierung alle oben genannten Inhalte zur Verfügung.
- Download: Spiegelungen 2
- Download: Vektor-Logo (Eidechse)
- Download: Sepia-Vintage-Effekt-Aktion
- Tutorial: Neue Pinsel erstellen leicht gemacht
- Tutorial: Kommerzielle Fotografie 01: Berufswunsch Fotografie
- Tutorial: Linien zum Glühen bringen
- Tutorial: Ballons aus einer Schublade
- Videotraining: CorelDRAW X6 Grundlagen - Hilfsmittel Freihand, 2-Punkt-Linie, Bezier, B-Spline, Polylinie, Stift, 3-Punkt-Kurve
- Videotraining: CorelDRAW X6 Grundlagen: Hilfsmittel Form - Heranziehen, Zurückweisen
- Videotraining: Die Programmoberfläche und der Arbeitsbereich von Adobe InDesign
- Videotraining: Lichtscheinkontureneffekt mit Animation
Das Punktesystem
Einen winzigen Haken gibt es noch. Es gibt bei uns ein Punktesystem. Damit soll erreicht werden, dass Mitglieder sich aktiv in unserer Community beteiligen. Sobald du im Forum schreibst oder Tutorials kommentierst, bekommst du Punkte. Mit diesen Punkten kannst du wiederum Tutorials anschauen oder Downloads herunterladen. Mit der Registrierung bei PSD-Tutorials.de erhältst du ein Startguthaben von 100 Punkten, womit du schon ein gutes Stück weit kommst.
PHP-Workshop-DVD - Basics & Tricks
- 12 Stunden Video-Training, 480 PDF-Seiten Tutorials
- Basics, Formulare, Datenbanken, XML und Co.
- 4 Stunden Bonusmaterial zum Webdesign (mit Photoshop
Kommentare
Tutorial empfehlen
Anleitung (Bilder + Extras werden nur für Mitglieder eingeblendet)
In vorhandene oder selbst generierte Grafiken können mittels PHP Texte eingefügt werden. Zunächst ein einführendes Beispiel dazu, wie sich so etwas umsetzen lässt.
<?php $x = 300; $y = 200; $text = 'Hallo, Welt!'; $bild = imageCreateTrueColor($x, $y); $farbe = imageColorAllocate($bild, 120, 130, 180); $textfarbe = imageColorAllocate($bild, 0, 0, 0); imageFilledRectangle($bild, 0, 0, $x, $y, $farbe); imageString($bild, 4, 15, 40, $text, $textfarbe); imagePng($bild); imageDestroy($bild); ?>
Ihr seht an dieser Syntax zunächst einmal, dass hier weitestgehend altbekannte Elemente eingesetzt werden. Wirklich neu ist eigentlich nur die Funktion
imageString(), über die letztendlich der Text in die Grafik eingefügt wird. Als ersten Parameter übergibt man dieser Funktion die Grafikressource. Über den zweiten Parameter wird die Schriftgröße bestimmt. Als Schriftgrößen können Werte zwischen 1 (sehr klein) und 5 (sehr groß) angegeben werden. Alternativ dazu sind auch Schlüsselwörter möglich.•
tiny•
small•
medium•
bold•
large•
giant<img src="text.php" width="300" height="200" />
Das Ergebnis sieht folgendermaßen aus:

TrueType-Schriften verwenden
Kommt die Sprache auf das Einfügen von Texten, stellt sich zunächst natürlich die Frage, welche Schriftarten hier denn eigentlich verwendet werden können? Die GD-Bibliothek bringt einige eingebaute Schriftarten mit. Damit hat man allerdings nicht sehr viel Gestaltungsspielraum. Es gibt jedoch auch die Möglichkeit, TrueType-Fonts einzubinden. Damit das funktioniert, muss die GD-Bibliothek mit der Option--enable-gd-native-ttf kompiliert worden sein. Außerdem müssen die gewünschten Schriftarten auf dem System vorhanden sein und man muss die exakten Pfade zu denen kennen.Unter Windows findet ihr die installierten Schriftarten z.B. im Fonts-Verzeichnis des Windows-Verzeichnisses.

Im folgenden Beispiel wird davon ausgegangen, dass die Schriftartendatei im selben Verzeichnis wie die PHP-Datei liegt.
<?php
header('Content-Type: image/png');
$x = 300;
$y = 200;
$text = 'Hallo, Welt!';
$font = "verdana.ttf";
$bild = imageCreateTrueColor($x, $y);
$farbe = imageColorAllocate($bild, 120, 130, 180);
$textfarbe = imageColorAllocate($bild, 0, 0, 0);
imageFilledRectangle($bild, 0, 0, $x, $y, $farbe);
imageTtfText($bild, 19, 0, 40, 100, $textfarbe, $font, $text);
imagePng($bild);
imageDestroy($bild);
?>
Zwei Dinge sind an dieser Syntax besonders interessant. Da wäre zunächst die Definition der Variablen
$font. Dieser Variablen werden Pfad und Name der Schriftartendaten übergeben.$font = "verdana.ttf";
imageTtfText() verwendet. Diese Funktion zeichnet einen Text mit einer TrueType-Schriftart in die Grafik.
Der Funktion können zahlreiche Parameter übergeben werden. Als erster Parameter wird die Bildressource angegeben. Über den zweiten Parameter bestimmt man die Schriftgröße. Interpretiert wird der übergebene numerische Wert dabei als Punkt.
imageTtfText($bild, 19, 90, 140, 200, $textfarbe, $font, $text);
Das Ergebnis sähe in diesem Fall folgendermaßen aus:

Über die Parameter vier und fünf werden die x- und y-Koordinaten definiert. Deren Ursprung liegt jeweils in der linken oberen Ecke und deren Bezugspunkt in der linken unteren Ecke des ersten Buchstabens der angegebenen Zeichenkette.
Die Schriftfarbe übergibt man über den sechsten Parameter. Die eigentliche Schriftart wird als siebter Parameter festgelegt. Schlussendlich muss dann noch der Text notiert werden, was über den achten Parameter geschieht.
Texte zentrieren
Eine Anwendung, die man immer wieder braucht, ist das Zentrieren von Texten innerhalb einer Grafik. Eine einfache Zentrierung, wie ihr das aus HTML oder CSS kennt, ist dabei leider nicht möglich. Hier muss vielmehr eine kleine Berechnung angestellt werden. Im folgenden Beispiel werden dafür die Höhe und die Breite der Grafik ins Verhältnis zu der Breite des Textes gesetzt. Dabei wird davon ausgegangen, dass der Text weniger Platz als die eigentliche Grafik beansprucht. (Ein automatischer Zeilenumbruch wird also nicht generiert).Auch hier zunächst das eigentliche Beispiel in seiner Gesamtheit.
<?php
header('Content-Type: image/png');
$x = 300;
$y = 200;
$text = 'Hallo, Welt!';
$font = 3;
$bild = imageCreateTrueColor($x, $y);
$farbe = imageColorAllocate($bild, 120, 130, 180);
$textfarbe = imageColorAllocate($bild, 0, 0, 0);
imageFilledRectangle($bild, 0, 0, $x, $y, $farbe);
$breite = imageFontWidth($font) * strlen($text);
$hoehe = imageFontHeight($font);
$x = ($x - $breite) / 2;
$y = ($y - $hoehe) / 2;
imageString($bild, $font, $x, $y, $text, $textfarbe);
imagePng($bild);
imageDestroy($bild);
?>
Eingebunden wird die Datei dann wieder auf dem bekannten Weg:
<img src="zentrieren.php" width="300" height="200" />

imageFontWidth() die Breite eines einzelnen Zeichens zu und multipliziert das Ganze mit der Anzahl der in der Zeichenkette vorhandenen Zeichen.$breite = imageFontWidth($font) * strlen($text);
Einfacher funktioniert das bei der Berechnung der Höhe. Dort kann man nämlich einfach die Funktion
imageFontHeight() verwenden.$hoehe = imageFontHeight($font);
Im nächsten Schritt müssen die Koordinaten berechnet werden, anhand derer sich der Text letztendlich zentrieren lässt. Dazu wird die Breite der Zeichenkette von der Breite der Grafik abgezogen. Dieses Ergebnis wird dann noch einmal halbiert. Dieses Prozedere wird für die Höhe und die Breite gemacht.
$x = ($x - $breite) / 2; $y = ($y - $hoehe) / 2;
Mit den erhaltenen Werten kann dann der Text zentriert in die Grafik eingetragen werden.
imageString($bild, $font, $x, $y, $text, $textfarbe);
-
Reklame
-
-
- Fotobüchern
- Umrandung um Textfeld
- Kanten glätten bei meinem Bild oder Vektor?
- After Effects Ram-Vorschau - Problem mit Cache (aktualisert nicht)
- blender render stürzt ständig ab
- jQuery - Größe von einem Frameset ändern?
- [CS5] "Löschen-Mitteilung"
- Zerissenes Foto
- Biete Programmierung Ihres PSD-Designs
- Fehler beim Platzieren von Bildern
- Zeilenumbruch CS4
- Gestaltung eines Logos
- Kaufberatung Drucker
- Dynamische Auswahlliste: Name und ID übergeben
- Adobe Encore - Probleme Schaltflächen Unterbild
- 2 Fotos mit unterschiedlichem Schlagschatten in einer Datei
- Copyright-Frage - öffentliche Veranstaltung
- Photoshop auf Mini Lappi
- Link auf Anker - Firefox Problem
- Auftrag: Individuelle Flash-Gallerie
-
-
Aktuelles Commag
Anzeige
-
Anzeige


Social Media