LX. Grafik-Funktionen

Einführung

Mit PHP können Sie nicht nur HTML ausgeben, sondern auch Grafiken in vielen Formaten - wie gif, png, jpg, wbmp, und xpm - erzeugen und/oder manipulieren. Noch besser, Sie können Grafiken mit PHP direkt als Datenstrom ausgeben. Damit das funktioniert, müssen Sie PHP mit der GD-Bibliothek zur Grafikbearbeitung kompilieren. GD und PHP benötigen, je nachdem mit welchen Grafikformaten Sie arbeiten wollen, zusätzliche Bibliotheken.

Sie können die Grafikfunktionen in PHP auch verwenden, um die Größe von JPEG, GIF, PNG, SWF, TIFF und JPEG2000 Grafiken zu bestimmen.

Anmerkung: Im Abschnitt über die Anforderungen können Sie nachlesen, wie Sie die Möglichkeiten zur Grafikbearbeitung erweitern können: lesen, schreiben und manipulieren von Grafiken, und auslesen von Metadaten, bei Bildern die mit einer Digitalkamera aufgenommen wurden.

Anforderungen

Mit der GD Bibliothek (verfügbar unter http://www.boutell.com/gd/) können Sie auch Grafiken erzeugen und manipulieren.

Die mittels dieser Funktionen veränderbaren Grafik-Formate hängen davon ab, welche Version von GD Sie installieren und welche zusätzlich Biblioitheken GD benötigt um mit diesen Formaten umgehen zu können. GD-Versionen älter als gd-1.6 unterstützen GIF aber kein PNG. Neuere Versionen als gd-1.6 und ältere als gd-2.0.28 unterstützen PNG, aber kein GIF. In gd-2.0.28 gibt es erstmals wieder Unterstützung für GIF.

Anmerkung: Seit PHP 4.3 ist eine Version der GD-Bibliothek in PHP enthalten. Diese gebündelte Version bietet zusätzliche Möglichkeiten, wie z.B. alpha blending und sollte der externen Version immer vorgezogen werden (der Code wird besser betreut und ist stabiler).

Sie können GD erweitern, um mehr Grafikformate zu verwenden.

Tabelle 1. Unterstützte Grafikformate

GrafikformatDownload der benötigten BibliothekAnmerkungen
gif  Wird nur von GD-Versionen älter als gd-1.6 und neuer als gd-2.0.28 unterstützt. Nur-lesende Unterstützung von GIF gibt es ab PHP 4.3.0 und der gebündelten GD-Version. Schreibende Unterstützung steht ab den Versionen PHP 4.3.9 und PHP 5.0.1 zur Verfügung.
jpeg-6bftp://ftp.uu.net/graphics/jpeg/ 
pnghttp://www.libpng.org/pub/png/libpng.html Nur von GD-Versionen neuer als gd-1.6. unterstützt.
xpmftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html Falls auf Ihrem System eine X-Umgebung installiert ist, steht Ihnen diese Bibliothek wahrscheinlich schon zur Verfügung.

Sie können GD erweitern, um unterschiedliche Schriften zu verwenden. Die folgenden Schriftbibliotheken werden unterstützt.

Tabelle 2. Unterstützte Schriftbibliotheken

SchriftbibliothekDownloadAnmerkungen
FreeType 1.xhttp://www.freetype.org/ 
FreeType 2http://www.freetype.org/ 
T1libftp://sunsite.unc.edu/pub/Linux/libs/graphics/) Unterstützung für Type 1 Schriften.

Falls Sie PHP mit der Option --enable-exif konfiguriert und übersetzt haben, können Sie Informationen im Kopfbereich von JPEG und TIFF Grafiken verarbeiten. Wie schon weiter oben erwähnt, eröffnet Ihnen diese Option die Möglichkeit Metadaten von Bildern zu verarbeiten, die mit Digitalkameras erzeugt wurden. Diese Funktionen benötigen nicht die GD-Bibliothek.

Installation

To enable GD-support configure PHP --with-gd[=DIR], where DIR is the GD base install directory. To use the recommended bundled version of the GD library (which was first bundled in PHP 4.3.0), use the configure option --with-gd. GD library requires libpng and libjpeg to compile.

In Windows, you'll include the GD2 DLL php_gd2.dll as an extension in php.ini. The GD1 DLL php_gd.dll was removed in PHP 4.3.2. Also note that the preferred truecolor image functions, such as imagecreatetruecolor(), require GD2.

Anmerkung: To enable exif support in Windows, php_mbstring.dll must be loaded prior to php_exif.dll in php.ini.

To disable GD support in PHP 3 add --without-gd to your configure line.

Enhance the capabilities of GD to handle more image formats by specifying the --with-XXXX configure switch to your PHP configure line.

Tabelle 3. Supported image formats

Image FormatConfigure Switch
jpeg-6b To enable support for jpeg-6b add --with-jpeg-dir=DIR.
png To enable support for png add --with-png-dir=DIR. Note, libpng requires the zlib library, therefore add --with-zlib-dir[=DIR] to your configure line.
xpm To enable support for xpm add --with-xpm-dir=DIR. If configure is not able to find the required libraries, you may add the path to your X11 libraries.

Anmerkung: When compiling PHP with libpng, you must use the same version that was linked with the GD library.

Enhance the capabilities of GD to deal with different fonts by specifying the --with-XXXX configure switch to your PHP configure line.

Tabelle 4. Supported font libraries

Font libraryConfigure Switch
FreeType 1.x To enable support for FreeType 1.x add --with-ttf[=DIR].
FreeType 2 To enable support for FreeType 2 add --with-freetype-dir=DIR.
T1lib To enable support for T1lib (Type 1 fonts) add --with-t1lib[=DIR].
Native TrueType string function To enable support for native TrueType string function add --enable-gd-native-ttf.

Laufzeit Konfiguration

There are no image specific configurations but you may be interested in the exif extension directives.

Resource Typen

Diese Erweiterung definiert keine Resource-Typen.

Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

IMG_GIF (integer)

IMG_JPG (integer)

IMG_JPEG (integer)

IMG_PNG (integer)

IMG_WBMP (integer)

IMG_XPM (integer)

IMG_COLOR_TILED (integer)

IMG_COLOR_STYLED (integer)

IMG_COLOR_BRUSHED (integer)

IMG_COLOR_STYLEDBRUSHED (integer)

IMG_COLOR_TRANSPARENT (integer)

IMG_ARC_ROUNDED (integer)

IMG_ARC_PIE (integer)

IMG_ARC_CHORD (integer)

IMG_ARC_NOFILL (integer)

IMG_ARC_EDGED (integer)

IMAGETYPE_GIF (integer)

IMAGETYPE_JPEG (integer)

IMAGETYPE_PNG (integer)

IMAGETYPE_SWF (integer)

IMAGETYPE_PSD (integer)

IMAGETYPE_BMP (integer)

IMAGETYPE_WBMP (integer)

IMAGETYPE_XBM (integer)

IMAGETYPE_TIFF_II (integer)

IMAGETYPE_TIFF_MM (integer)

IMAGETYPE_IFF (integer)

IMAGETYPE_JB2 (integer)

IMAGETYPE_JPC (integer)

IMAGETYPE_JP2 (integer)

IMAGETYPE_JPX (integer)

IMAGETYPE_SWC (integer)

Beispiele

Beispiel 1. PNG erzeugen mit PHP

<?php

header
("Content-type: image/png");
$string = $_GET['text'];
$im     = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);

?>
Dieses Beispiel würde von einer Seite über einen Link wie <img src="button.php?text=text"> aufgerufen. Das oben aufgezeigte Beispielskript button.php nimmt den Text "text" entgegen und legt diesen über ein vorhandenes Bild, in diesem Fall "images/button1.png" und gibt die resultierende Grafik aus. Diese Vorgehensweise ist sehr zweckmäßig, wenn Sie vermeiden wollen, dass Sie immer wieder neue Button-Grafiken erstellen müssen, falls Sie die Beschriftung eines Buttons ändern wollen. Mit der vorgestellten Methode werden Ihr Buttons, samt Beschriftung, dynamisch generiert.

Inhaltsverzeichnis
gd_info -- Retrieve information about the currently installed GD library
getimagesize --  Ermittelt die Ausmaße einer GIF-, JPEG-, PNG- oder SWF-Grafik-Datei
image_type_to_extension --  Get file extension for image type
image_type_to_mime_type -- Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
image2wbmp -- Output image to browser or file
imagealphablending -- Set the blending mode for an image
imageantialias --  Should antialias functions be used or not
imagearc -- Zeichnen einer Teil-Ellipse
imagechar --  Stellt ein Zeichen mit horizontaler Ausrichtung dar
imagecharup --  Zeichnet einen vertikal ausgerichteten Charakter
imagecolorallocate -- Bestimmt die Farbe einer Grafik
imagecolorallocatealpha -- Allocate a color for an image
imagecolorat -- Ermittelt den Farbwert eines Bildpunktes
imagecolorclosest --  Ermittelt den Farbwert-Index, der den angegebenen Farben am nächsten liegt
imagecolorclosestalpha -- Get the index of the closest color to the specified color + alpha
imagecolorclosesthwb --  Get the index of the color which has the hue, white and blackness nearest to the given color
imagecolordeallocate -- Löscht eine Farbdefinition
imagecolorexact --  Ermittelt den Index-Wert der angegebenen Farbe
imagecolorexactalpha -- Get the index of the specified color + alpha
imagecolormatch --  Makes the colors of the palette version of an image more closely match the true color version
imagecolorresolve --  Ermittelt den Index-Wert der angegebenen Farbe oder die nächst mögliche Alternative dazu
imagecolorresolvealpha --  Get the index of the specified color + alpha or its closest possible alternative
imagecolorset --  Setzt die Farbe für den angegebenen Paletten-Index
imagecolorsforindex --  Ermittelt die Farbwerte einer angegebenen Farb-Palette
imagecolorstotal --  Ermittelt die Anzahl der definierten Farben eines Bildes
imagecolortransparent -- Definiert eine Farbe als transparent
imageconvolution --  Apply a 3x3 convolution matrix, using coefficient div and offset
imagecopy -- Kopiert einen Bildausschnitt
imagecopymerge -- Copy and merge part of an image
imagecopymergegray -- Copy and merge part of an image with gray scale
imagecopyresampled -- Copy and resize part of an image with resampling
imagecopyresized --  Kopieren und Ändern der Grösse eines Bild-Teiles
imagecreate -- Erzeugt ein neues Bild
imagecreatefromgd2 -- Create a new image from GD2 file or URL
imagecreatefromgd2part -- Create a new image from a given part of GD2 file or URL
imagecreatefromgd -- Create a new image from GD file or URL
imagecreatefromgif --  Erzeugt ein neues Bild im GIF-Format, welches aus einer Datei oder von einer URL gelesen wird
imagecreatefromjpeg --  Erzeugt ein neues Bild im JPEG-Format, welches aus einer Datei oder von einer URL gelesen wird
imagecreatefrompng --  Erzeugt ein neues Bild im PNG-Format, welches aus einer Datei oder von einer URL gelesen wird
imagecreatefromstring -- Create a new image from the image stream in the string
imagecreatefromwbmp -- Create a new image from file or URL
imagecreatefromxbm -- Create a new image from file or URL
imagecreatefromxpm -- Create a new image from file or URL
imagecreatetruecolor -- Create a new true color image
imagedashedline -- Zeichnen einer gestrichelten Linie
imagedestroy -- Löscht ein Bild
imageellipse -- Draw an ellipse
imagefill -- Füllen mit Farbe ("flood fill")
imagefilledarc -- Draw a partial ellipse and fill it
imagefilledellipse -- Draw a filled ellipse
imagefilledpolygon -- Zeichnet ein gefülltes Vieleck (Polygon)
imagefilledrectangle -- Zeichnet ein gefülltes Rechteck
imagefilltoborder --  Flächen-Farbfüllung ("flood fill") mit einer angegebenen Farbe
imagefilter --  Applies a filter to an image
imagefontheight -- Ermittelt die Font-Höhe
imagefontwidth -- Ermittelt die Font-Breite
imageftbbox -- Give the bounding box of a text using fonts via freetype2
imagefttext -- Write text to the image using fonts using FreeType 2
imagegammacorrect --  Anwendung einer Gamma-Korrektur auf ein GD-Bild
imagegd2 -- Output GD2 image to browser or file
imagegd -- Output GD image to browser or file
imagegif --  Ausgabe eines Bildes an den Browser oder in eine Datei
imageinterlace --  Schaltet die Interlaced-Darstellung eines Bildes an oder aus
imageistruecolor -- Finds whether an image is a truecolor image
imagejpeg --  Ausgabe des Bildes im Browser oder als Datei
imagelayereffect --  Set the alpha blending flag to use the bundled libgd layering effects
imageline -- Zeichnen einer Linie
imageloadfont -- Lädt einen neuen Font
imagepalettecopy -- Copy the palette from one image to another
imagepng --  Ausgabe eines Bildes an den Browser oder in eine Datei
imagepolygon -- Zeichnen eines Vielecks (Polygon)
imagepsbbox --  Ermittelt die Ausmaße des Rechtecks, das für die Ausgabe eines Textes unter Verwendung eines PostScript-Fonts (Typ 1) notwendig ist.
imagepsencodefont --  Ändert die Vektor-Beschreibung eines Fonts
imagepsextendfont -- Vergrößert oder komprimiert einen Font
imagepsfreefont --  Gibt den durch einen Typ 1 PostScript-Font belegten Speicher wieder frei
imagepsloadfont --  Lädt einen Typ 1 PostScript-Font aus einer Datei
imagepsslantfont -- Setzt einen Font schräg
imagepstext --  Ausgabe eines Textes auf einem Bild unter Verwendung von Typ 1 PostScript-Fonts
imagerectangle -- Zeichnet ein Rechteck
imagerotate -- Rotate an image with a given angle
imagesavealpha --  Set the flag to save full alpha channel information (as opposed to single-color transparency) when saving PNG images
imagesetbrush -- Set the brush image for line drawing
imagesetpixel -- Setzt ein einzelnes Pixel
imagesetstyle -- Set the style for line drawing
imagesetthickness -- Set the thickness for line drawing
imagesettile -- Set the tile image for filling
imagestring -- Zeichnet einen horizontalen String
imagestringup -- Zeichnet einen vertikalen String
imagesx -- Ermittelt die Bild-Breite
imagesy -- Ermittelt die Bild-Höhe
imagetruecolortopalette -- Convert a true color image to a palette image
imagettfbbox --  Ermittelt die Rahmenmaße für die Ausgabe eines Textes im True-Type-Format
imagettftext -- Erzeugt TTF-Text im Bild
imagetypes --  Gibt die von der aktuell verwendeten PHP-Version unterstützten Grafik-Formate zurück
imagewbmp -- Output image to browser or file
imagexbm --  Output XBM image to browser or file
iptcembed -- Embed binary IPTC data into a JPEG image
iptcparse --  Parse a binary IPTC http://www.iptc.org/ block into single tags.
jpeg2wbmp -- Convert JPEG image file to WBMP image file
png2wbmp -- Convert PNG image file to WBMP image file