| Die GD-Library ist die weltweit bekannteste OpenSource-Bibliothek zur Erzeugung und Bearbeitung von Pixel-Grafik. Zahlreiche Programme und Programmiersprachen (C++, Perl, PHP, ...) verwenden diese Bibliothek. |
|
Die Anwendung umfasst die Manipulation bestehender Pixel-Grafik, und die
'programmierte' Erstellung neuer Grafik. Eine Alternative für Objekt-Grafik bietet SVG, ebenfalls leicht mit PHP herzustellen. |
PHP
|
PHP Hypertext Processor |
| Installation | Installation der GD-Library für PHP auf Linux (LAMP) und Windows (WAMP) |
| Information | Daten über die installierte Version der GD-Library |
| image | Das image-Objekt der GD-Library |
| GIF | Bearbeitung von Bildern im Format GIF |
| JPEG | Bearbeitung von Bildern im Format JPEG |
| PNG | Bearbeitung von Bildern im Format PNG |
| Debug | Fehler bei der Grafik-Programmierung finden, anzeigen und beseitigen |
| TrueType | Verwendung beliebiger TrueType-Schriften |
| String | Grafik als Datenstrom senden oder in einer Datenbank speichern. |
| SVG | Dynamische Erstellung von SVG-Objekt-Grafik mit PHP |
| Beispiele | Analemma (Sonnenuhr-Gleichung), Farben-Addition und -Subtraktion, HSB-Farbscheibe, Julia-Menge, Mandelbrot-Menge,, Regenbogen-Farben, Schwarzkörper-Farben glühender Körper, Uhr, Zeitgleichung(Astronomie), ... |
| Links |
Ausgewählte
|
Pixel- und Objekt-Grafik mit PHP |
|
Pixel-Grafik (Raster-Grafik)Ein Bild wird durch zahlreiche einzelne Farb-Punkte (Pixel) dargestellt. Jeder Punkt ist durch Position und Farbe bestimmt.Es gibt mehrere Bibliotheken von Programmen zur Herstellung und Bearbeitung von Pixel-Grafik. |
•
Die XY-Koordinaten zur Angabe der Position werden von links oben gemessen. • Die Farbe wird entweder im → RGB-System angegeben (3 Zahlen 0...255 für Rot, Grün, Blau) oder im → FarbIndex-System (1 Zahl 0..255 pro Pixel). |
|
Solche Bilder kann man mit (PHP)-Programmen bearbeiten, z.B.: Verkleinern (Thumbnails), Filter anwenden (Helligkeit, Konstrast, Schärfe), Wasserzeichen oder Text eintragen, ... |
Diese Beispiele wurden mit PHP-Programmen erzeugt.Das ist sinnvoll, wenn man Regeln oder Formeln zur Herstellung angeben kann, und wenn dabei komplizierte Formen oder Farb-Mischungen auftreten. Für einfache Formen verwendet man besser ↓ Objekt-Grafik. |
Quelle: Boutell.com (modif)
GD-LibraryDie GD-Library von Thomas Boutell (rechts) ist die am weitesten verbreitete Bibliothek von Programmen für Pixel-Grafik. Die GD-Library gibt es in zahlreichen kostenfreien Versionen für alle gängigen Betriebssysteme und Programmiersprachen, darunter auch → C++, Perl, PHPFür dieses Web wird fast ausnahmslos die GD-Library verwendet, und zwar sowohl zur einmaligen Herstellung von 'berechneter' Pixel-Grafik (z.B. der gezeigten Farb-Balken und -Scheiben) als auch zur Live-Herstellung von dynamischer Pixel-Grafik. |
ImageMagickist eine Bibliothek von Pixel-Grafik Programmen. ImageMagick gibt es nicht nur als Bibliothek für alle modernen Programmiersprachen (PHP), sondern auch als alleinstehendes (Konsolen)-Programm zur Manipulation von Grafik-Dateien.Spezialität: ImageMagick kann mehr als 100 verschiedene Grafik-Formate umwandeln und bearbeiten, bietet jedoch auch Funktionen zur Bearbeitung (Filter, ...). |
Objekt-GrafikEin Bild besteht aus Grafik-Objekten, die durch Anweisungen beschrieben werden.Beispiele für Grafik-Objekte: Linien, Kreise, Rechtecke, Text, PixelGrafik-Schnipsel (Snippets). Einfache Objekte kann man zu beliebig komplexen Objekten zusammensetzen (z.B. zu einer Schraube, Motor, Auto, Flugzeug...) |
Es gibt mehrere Methoden, um ObjektGrafik-Anweisungen zu formulieren. Der wichtigste
Standard → SVG (Scalable
Vector Graphics) wird u.a. von allen modernen Browsern unterstützt. Objekt-Grafik (Vector-Grafik) kann man verlustfrei (!) transformieren, z.B. skalieren (vergrößern), drehen, ... Die Objekte lassen sich beliebig anordnen, gruppieren, ausrichten oder in Schichten übereinander legen. Mit der Programmiersprache Javascript kann man SVG Live manipulieren, z.B. Objekte erzeugen, ihre Eigenschaften ändern, Animationen durchführen usw. |
|
Dieses Beispiel zeigt eine einfache SVG-Grafik aus 4 Objekten (Kreis, Rechteck, Dreieck, Text). Rechts der SVG Quelltext dieser Grafik. Mit PHP oder jeder anderen modernen Programmiersprache kann man SVG-Text genauso einfach erzeugen wie HTML-Text. SVG-Grafik kann man in jede moderne XHTML-Webseite direkt (inline) einbetten. Der Browser (an ihrem Client-PC) erzeugt aus den Anweisungen das sichtbare Bild (= die Bildpunkte am Monitor). CairoAlle neueren PHP-Versionen enthalten diese Bibliothek, die zahlreiche Funktionen zur Herstellung von SVG Objekt-Grafik bietet.♦ Details zu SVG Objekt-Grafik |
SVG-Quelltext der links gezeigten Objekt-Grafik
<circle cx="50" cy="50" r="20" fill="red"/>
→ SVG wird von allen
modernen Browsern unterstützt. Lediglich die veralteten Versionen des MSIE-Browsers
können kein SVG anzeigen.
<rect x="15" y="15" width="30" height="30" fill="blue"/> <g transform="translate(60,30)">
<polygon id="dreieck" points="-20,11 20,11 0,-23" fill="#0F0" />
</g><g font-family="Verdana, sans-serif"> <text font-size="18" x="60" y="30" stroke="#000">SVG</text> </g> |
GD-Library: Information und Test |
|
Modul 'gd'Mit diesem Test können sie feststellen, ob die GD-Library in ihrer PHP Arbeits-Umgebung korrekt installiert ist.♦ Details zum Thema PHP-Module. |
$gd_ok = 0;
Live-if (extension_loaded('gd')) {$gd_ok++;}
$gd_ok = 1
Modul 'gd' ist geladen. |
Modul ImageMagick (imagick)Dieses Modul bietet anspruchsvolle Grafik-Funktionen, die über den Umfang der GD-Library weit hinausgehen.Insbesondere kann ImageMagick >90 verschiedene Grafik-Formate verarbeiten. Die Funktionen beanspruchen jedoch wesentlich mehr Prozessor-Zeit und sind deshalb bei üblichen Web-Providern nicht installiert - Deshalb werden Imagick Funktionen hier nicht demonstriert. |
● Für die Verwendung am eigenen PC oder Server ist ImageMagick jedoch sehr empfehlenswert, z.B. zur halb- oder vollautomatischen Verarbeitung von Digital-Camera Bildern. Das Modul bietet die Möglichkeit, die Funktionen professioneller Grafik-Programme auf Webseiten auszuführen. |
Dynamisches Laden zur LaufzeitFür Web-Provider ist es vorteilhaft, nur die wichtigsten PHP-Module ständig zu laden. PHP wird dadurch schlanker und schneller. Zusätzliche Module können dann mit Funktion dl (Argument = Dateiname gd.so (Linux) oder php_gd2.dll (Windows)) zur Laufzeit geladen werden.Danach sind Modul und Funktionen bis zum Ende der Script-Datei verfügbar. ♦ Details zum Thema PHP-Module. |
So wird Modul gd zur Laufzeit geladen:
if (!extension_loaded('gd')) {
Live-dl('gd.so');
}if (extension_loaded('gd')) {$gd_ok++;}
$gd_ok = 1
Modul 'gd' ist geladen. |
gd-InformationFunktion gd_info() der GD-Library gibt ein → Array mit Daten zur aktuell installierten Version zurück:
$i["GD Version"] = 2.0
$i["FreeType Linkage"] = with freetype |
PHP-Code zur Ausgabe aller Array-Elemente, die von Funktion gd_info()
zurückgegeben werden (vereinfacht).
$ia = gd_info();
foreach($ia as $k => $v) { print "ia['$k'] = $v <br />";
}
Links die Live- |
|
So wird eine Liste aller Funktionen des
Moduls gd erzeugt:
$func = get_extension_funcs('gd');
$c = count($func); print "Liste der $c Funktionen: <br />"; sort($func); foreach ($func as $f) {print "$f, ";} print '<br />'; Links das Live- |
|
GIF:Aus lizenzrechtlichen Gründen waren die Funktionen zum Schreiben von GIF-Dateien in älteren GD-Versionen nicht enthalten. Das umstrittene Patent von Unisys ist jedoch 2004 abgelaufen.Testen sie diese Funktionen, oder verwenden sie besser PNG - dieses Grafik-Format ersetzt GIF und ist in seinen technischen Möglichkeiten weit überlegen. ♦ Details zum Thema PHP-Grafik-GIF. |
$gif_ok = 0;
Live-$func = get_extension_funcs('gd'); if (in_array('imagegif',$func)) {$gif_ok++;}
$gif_ok = 1
Funktion 'imagegif' ist verfügbar |
Test-Grafik:Als weiteren Test können sie eine kleine Grafik erstellen und auf einer Webseite anzeigen.♦ Beispiele dazu finden sie auf den PHP-Grafik-Seiten (↑ Inhaltsverzeichnis). |
Diese Test-Grafik im Format → JPEG wurde mit PHP und gdlib aus einem Bild und einem Text erstellt. Als Beweis der dynamischen Erzeugung dient die Uhrzeit (am Server). |
Zugriffsrechte:PHP kann nur dann eine (Grafik)-Datei schreiben, wenn die Zugriffsrechte in diesem Verzeichnis freigegeben wurden.Erstellen sie dafür aus Sicherheitsgründen ein eigenes Verzeichnis, in dem sich nur temporär von PHP erstellte Dateien befinden. ● Alternative: Erzeugen sie keine Dateien, sondern senden sie die Grafik als → Datenstrom (String). |
Browser-Cache:Jeder Browser versucht, eine Grafik aus seinem Cache-Speicher zu laden und nicht live anzufordern.• Das können sie unterbinden, indem sie jedesmal neue → Zufallsnamen für die Grafik-Datei vergeben. • Im Server-Verzeichnis für temporäre Grafik-Dateien müssen sie nicht mehr benötigte Dateien wieder → löschen, am besten am Beginn oderr Ende jenes Script-Programms, welches eine neue Grafik erzeugt. |
PerlDie GD-Library kann man auch mit der Programmiersprache → Perl verwenden. Das Perl-GD-Modul ist zwar in den meisten Linux-Distributionen enthalten, nicht jedoch in der → Windows-Distribution von ActivePerl. Für Windows muss man das Perl-Modul aus dem Internet laden. |
Konsolen-ProgrammImageMagick ist auch als Konsolen-Programm verwendbar, d.h. die Funktionen können auch ohne PHP direkt auf einer Linux-shell oder Windows-"Eingabeaufforderung" cmd.exe ausgeführt werden.Das öffnet eine Möglichkeit zur Automatisierung der Bildverarbeitung. |
|
|
|
● Boutell.com -
Die Homepage der GD-Library von Thomas Boutell ImageMagick.org - Homepage der ImageMagick Library PHPnet - Grafik-Funktionen |
Wikipedia: GD-Library,
ImageMagick
|
|
PHP Builder:
Image functions PHPfreaks - GD-Tutorial, GD-Thumbnails PHP-Forum (de) - Grafik-Funktionen SelfPHP |
|
|
Letzte Änderung dieser Seite: 2012-03-09 12:55:04
|