Damit erzeugen Sie aus dem Bild test.jpgeine neue Datei neu.png und geben diese auf einer HTML-Seite aus. Diese Format-Umwandlung stellt eine einfache Form einer Bildmanipulation dar, die aber die grundsätzliche Vorgehensweise gut illustriert.
Bei den weiteren Beispielen muss man unterscheiden zwischen Funktionen, die auch in älteren GD-Versionen zur Verfügung stehen, und den fortgeschrittenen Varianten, die mit Filtern arbeiten. Diese stehen nur in der PHP 5-Version mit integrierter GD-Library zur Verfügung.
Helligkeitsregelung mit Hilfe von GD-Funktionen.
»Thumbnails erstellen«
Eine Art Standardszenario für den Einsatz von GD ist die Veränderung der Bildgröße. Damit können Sie zum Beispiel aus einem Bilderfundus, den Sie per FTP auf den Server geladen haben, sehr schnell eine Thumbnail-Ga-lerie erzeugen. Realisiert wird dies mit der Funktion imageCopyResized . Mit dem in der vorgestellten Basisfunktion genutzten Bildmaterial sieht die Thumbnail-Generierung so aus:
border="0">
Zuerst werden die Dimensionen des Quellbildes ermittelt und dann wird es geladen. Anschließend wird aus der vorgegebenen Breite des Thumbnails dessen proportional richtige Höhe berechnet. Rufen Sie dann die Funktion imageCreateTrueColor auf und übergeben Sie ihr als Parameter die Größe der neuen Grafik in der Reihenfolge Breite und Höhe.
Anschließend können Sie das Bild mit imageCopyResized kopieren, in die gewünschte Größe skalieren und in die Zielgrafik einfügen. In folgender Reihenfolge müssen die Parameter dabei übergeben werden:Handle Zielgrafik, Handle Quellgrafik, Zielpunkt-X, Zielpunkt-Y, Quellpunkt-X, Quell-punkt-Y, Ziel-Breite, Ziel-Höhe, Quell-Breite, Quell-Höhe).Abschließend speichern Sie das Thumbnail und geben Quell- und Thumbnail-Bild im Browser aus. Erweitern können Sie dieses Basis-Skript in vielfältiger Weise. Für eine Bildergalerie interessant ist vor allem die Massenumwandlung vorhandener Quellbilder in Thumbnails. Dazu kann man zum Beispiel die Dateinamen aus einem Verzeichnis, in dem sich die Bilder befinden, in ein Array auslesen ( opendir und readdir ). In einer Foreach-Schleife wird anschließend für jede ermittelte Bilddatei analog zu dem vorgestellten Beispiel ein Thumbnail generiert.
Eine andere Erweiterung könnte zum Beispiel mit einem Upload-Formular verknüpft werden. User könnten auf diesem Weg eigene Bilder in eine Galerie hochladen, und aus dem Upload würde automatisch ein Thumbnail generiert werden.
»Echte Bildmanipulation«
Mit PHP 5 wurde die GD-Biblio-thek wie erwähnt um echte Funktionen zur Bildmanipulation erweitert. Negative und Graustufenbilder, bisher mit einer aufwendigen Rechnerei verbunden, lassen sich jetzt mit einem einzigen Funktionsaufruf realisieren. Damit jedoch nicht genug: Die neue Funktion imagefilter bietet eine ganze Reihe weiterer Manipulationsvarianten.
Als Parameter müssen die zu manipulierende Ressource, der Filter selbst und bis zu drei weitere Parameter übergeben werden:
Mit IMG_FILTER_BRIGHTNESS können Sie die Helligkeit eines Bildes einstellen. Der dritte Parameter ist eine Zahl zwischen -255 (dunkel) und 255 (hell). Der Wert 0 verändert das Bild nicht.
Der Filter IMG_FILTER_CONTRAST regelt den Kontrast eines Bildes. Der Wert des dritten Parameters kann hier wieder zwischen -255 und 255 variieren.
Der Filter IMG_FILTER_GRAYSCALE wandelt ein Quellbild ohne weitere Parameter in ein Graustufenbild um.
Mit IMG_FILTER_NEGATE können Sie ebenfalls ohne weitere Parameter eine Negativ eines Bildes generieren.
Der Filter IMG_FILTER_COLORIZE erzeugt eine Farbfläche, wobei Sie mit den drei folgenden Parametern die RGB-Werte der Farbe festlegen, mit der das Bild koloriert werden soll.
Ein Reliefbild können Sie mit dem Filter IMG_FILTER_EDGEDETECT ohne weitere Parameter erstellen.
Mit Hilfe des Filters IMG_FILTER_EMBOSS können Sie einem Bild einen 3D-Effekt verleihen.
Weiche Schatten erzeugen Zeichenprogramme mit Hilfe des Gaußschen Weichzeichners. Das GD-Äquivalent ist der Filter IMG_FILTER_GAUS-SIAN_BLUR.
Der Filter IMG_FILTER_SMOOTH glättet ein Bild. Den Grad können Sie mit dem dritten Parameter festlegen.
Der IMG_FILTER_MEAN_REMOVAL versieht Ihr Bild mit Effekten, wie sie typischerweise bei Zeichnungen auftreten.
Die Anwendung dieser Filter ist sehr einfach. Das folgende Beispiel holt unser Testbild und erhöht die Helligkeit um den Wert 100:
Originalbild
|
Aufgehelltes Bild
|
border="0">
|
border="0">
|
Nach diesem Schema können die anderen Filter, die GD bietet, ebenfalls eingesetzt werden. Allerdings ist eine solche Batch-Bearbeitung auf dem Server nicht gerade typisch für die Manipulation von Bildern. So richtig ihre Stärke ausspielen können diese Filter nur, wenn noch ein Schuss Interaktivität dazukommt.
Die Generierung von Thumbnails ist eine Standardaufgabe der GDLib.
»Grafik interaktiv«
Über ein HTML-Formular können zum Beispiel die Werte für die diversen Parameter interaktiv eingegeben werden. Diese Werte werden an ein PHP-Skript übergeben, das die gewünschten Manipulationen durchführt und das Ergebnis zusammen mit dem Original im Browser wieder ausgibt.
Das wäre im Ergebnis der Grundstock für ein Online-Bildverarbeitungsprogramm auf der Basis von PHP und GD. Das könnte sich zwar nicht mit Desktop-Boliden wie Photoshop oder Photo Impact messen, würde aber einem Webdesigner bei Standardmanipulationen eine Menge Zeit und Arbeit ersparen. Der ständige Up- und Download mit zwischenzeitlicher Bildverarbeitung auf dem PC würde damit entfallen. Einen guten PHP-Ansatz stellt das Projekt unter http://www.cix-blog.de/thm/GDlib-Bildbearbeitung-und-Grafik-Ef-fekte dar. Es handelt sich dabei um einen Klassenbibliothek, die umfangreiche Funktionen für die Online-Bildverarbeitung mit PHP bietet. [mb]
PDF-Dokumente online erstellen und ausgeben
Gerade bei dynamischen Webseiten ist häufig die On-the-Fly-Ausgabe von PDF-Daten gefragt. Es gibt eine ganze Reihe von PHP-Klassen, die das erledigen. Von Max Bold
Auf einen Blick
» Der Workshop zeigt verschiedene Methoden, mit denen Sie PDF-Dokumente innerhalb Ihrer Webanwendung generieren und ausgeben können.
» Sie erfahren, wie Sie mit Hilfe von PHP-Bibliotheken oder -Klassen PDF-Dokumente dynamisch generieren.
Alle gängigen Office-Applikationen sind in der Lage, PDF-Output zu generieren, vorausgesetzt die entsprechenden Treiber und Tools sind installiert. Damit lassen sich schnell Dokumente in einem Format ausgeben, das dank Adobe Reader auf vielen Plattformen ohne Probleme gelesen werden kann. Anders sieht es jedoch bei dynamischen Inhalten von Webseiten aus, die aus Datenbanken erst zum Zeitpunkt des Abrufs generiert werden. Ist hier eine Ausgabe als PDF gewünscht, muss die Konvertierung auf dem Server erfolgen.
Auch dafür gibt es diverse Werkzeuge, mit denen sich ein solcher Workflow realisieren lässt. Am einfachsten gestaltet sich die Konvertierung, wenn das verwendete Content-Management-System eine Exportfunktion für PDF integriert hat. Das ist bei zahlreichen Applikationen Standard, oder die entsprechende Funktion kann mit Extensions nachgerüstet werden. Einige CMS wie zum Beispiel Joomla oder Contenido arbeiten hier mit der PHP-Klasse TCPDF ( www.tcpdf.org), die diese Arbeit innerhalb des Content-Management-Systems erledigt.
Читать дальше