Forum und email

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.

Mittels der exif-Erweiterung können sie die in den Headern von JPEG- und TIFF-Grafiken enthaltenen Informationen verarbeiten. Auf diese Weise können von Digitalkameras erstellte Metadaten verarbeitet werden. Die Exif-Funktionen benötigen nicht die GD-Bibliothek.

Hinweis: 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 » https://www.libgd.org/) 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.

Hinweis: 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).

Hinweis: Mit PHP 6.0.0 wurde die Unterstützung von GD 1.x eingestellt; es wird eine Bibliothek ab Version 2.0.33 benötigt.

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

Unterstützte Grafikformate
Grafikformat Download der benötigten Bibliothek Anmerkungen
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-6b » ftp://ftp.uu.net/graphics/jpeg/  
png » https://www.libpng.org/pub/png/libpng.html Nur von GD-Versionen neuer als gd-1.6. unterstützt.
xpm » ftp://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.

Unterstützte Schriftbibliotheken
Schriftbibliothek Download Anmerkungen
FreeType 1.x » https://www.freetype.org/ Unterstützung mit PHP 6.0.0 eingestellt
FreeType 2 » https://www.freetype.org/  
T1lib » ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) Unterstützung für Type 1 Schriften.

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.

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.

Supported image formats
Image Format Configure 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.

Hinweis: 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.

Supported font libraries
Font library Configure 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 (Postscript 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

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

Image Konfigurationsoptionen
Name Standard Veränderbar Changelog
gd.jpeg_ignore_warning "0" PHP_INI_ALL Available since PHP 5.1.3.
Weitere Details und die Definitionen der PHP_INI_*-Konstanten finden Sie im php.ini Einstellungen.

Hier eine kurze Erklärung der Konfigurationsoptionen:

gd.jpeg_ignore_warning bool

Ignore warnings created by jpeg2wbmp() and imagecreatefromjpeg()

See also the exif configuration directives.

Warnung

Image functions are very memory intensive. Be sure to set memory_limit high enough.

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.

GD_VERSION (string)
The GD version PHP was compiled against. (Available as of PHP 5.2.4)
GD_MAJOR_VERSION (integer)
The GD major version PHP was compiled against. (Available as of PHP 5.2.4)
GD_MINOR_VERSION (integer)
The GD minor version PHP was compiled against. (Available as of PHP 5.2.4)
GD_RELEASE_VERSION (integer)
The GD release version PHP was compiled against. (Available as of PHP 5.2.4)
GD_EXTRA_VERSION (string)
The GD "extra" version (beta/rc..) PHP was compiled against. (Available as of PHP 5.2.4)
IMG_GIF (integer)
Used as a return value by imagetypes()
IMG_JPG (integer)
Used as a return value by imagetypes()
IMG_JPEG (integer)
Used as a return value by imagetypes()

Hinweis: This constant has the same value as IMAGE_JPG

IMG_PNG (integer)
Used as a return value by imagetypes()
IMG_WBMP (integer)
Used as a return value by imagetypes()
IMG_XPM (integer)
Used as a return value by imagetypes()
IMG_COLOR_TILED (integer)
Special color option which can be used in stead of color allocated with imagecolorallocate() or imagecolorallocatealpha()
IMG_COLOR_STYLED (integer)
Special color option which can be used in stead of color allocated with imagecolorallocate() or imagecolorallocatealpha()
IMG_COLOR_BRUSHED (integer)
Special color option which can be used in stead of color allocated with imagecolorallocate() or imagecolorallocatealpha()
IMG_COLOR_STYLEDBRUSHED (integer)
Special color option which can be used in stead of color allocated with imagecolorallocate() or imagecolorallocatealpha()
IMG_COLOR_TRANSPARENT (integer)
Special color option which can be used in stead of color allocated with imagecolorallocate() or imagecolorallocatealpha()
IMG_ARC_ROUNDED (integer)
A style constant used by the imagefilledarc() function.

Hinweis: This constant has the same value as IMG_ARC_PIE

IMG_ARC_PIE (integer)
A style constant used by the imagefilledarc() function.
IMG_ARC_CHORD (integer)
A style constant used by the imagefilledarc() function.
IMG_ARC_NOFILL (integer)
A style constant used by the imagefilledarc() function.
IMG_ARC_EDGED (integer)
A style constant used by the imagefilledarc() function.
IMG_GD2_RAW (integer)
A type constant used by the imagegd2() function.
IMG_GD2_COMPRESSED (integer)
A type constant used by the imagegd2() function.
IMG_EFFECT_REPLACE (integer)
Alpha blending effect used by the imagelayereffect() function.
IMG_EFFECT_ALPHABLEND (integer)
Alpha blending effect used by the imagelayereffect() function.
IMG_EFFECT_NORMAL (integer)
Alpha blending effect used by the imagelayereffect() function.
IMG_EFFECT_OVERLAY (integer)
Alpha blending effect used by the imagelayereffect() function.
IMG_FILTER_NEGATE (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_GRAYSCALE (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_BRIGHTNESS (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_CONTRAST (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_COLORIZE (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_EDGEDETECT (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_GAUSSIAN_BLUR (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_SELECTIVE_BLUR (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_EMBOSS (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_MEAN_REMOVAL (integer)
Special GD filter used by the imagefilter() function.
IMG_FILTER_SMOOTH (integer)
Special GD filter used by the imagefilter() function.
IMAGETYPE_GIF (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_JPEG (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_PNG (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_SWF (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_PSD (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_BMP (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_WBMP (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_XBM (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_TIFF_II (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_TIFF_MM (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_IFF (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_JB2 (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_JPC (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_JP2 (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_JPX (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_SWC (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions.
IMAGETYPE_ICO (integer)
Image type constant used by the image_type_to_mime_type() and image_type_to_extension() functions. (Available as of PHP 5.3.0)
PNG_NO_FILTER (integer)
A special PNG filter, used by the imagepng() function.
PNG_FILTER_NONE (integer)
A special PNG filter, used by the imagepng() function.
PNG_FILTER_SUB (integer)
A special PNG filter, used by the imagepng() function.
PNG_FILTER_UP (integer)
A special PNG filter, used by the imagepng() function.
PNG_FILTER_AVG (integer)
A special PNG filter, used by the imagepng() function.
PNG_FILTER_PAETH (integer)
A special PNG filter, used by the imagepng() function.
PNG_ALL_FILTERS (integer)
A special PNG filter, used by the imagepng() function.

Beispiele

Example#1 PNG erzeugen mit PHP

<?php

header
("Content-type: image/png");
$string $_GET['text'];
$im     imagecreatefrompng("images/button1.png");
$orange imagecolorallocate($im22021060);
$px     = (imagesx($im) - 7.5 strlen($string)) / 2;
imagestring($im3$px9$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