Signatur
Beschreibung
imagegd2() speichert oder sendet ein GD-Bild-Objekt im proprietären GD2-Format. Dieses Format wird von der GD-Bibliothek intern verwendet und eignet sich hauptsächlich zum schnellen Zwischenspeichern von Bilddaten, da es im Gegensatz zu JPEG oder PNG ohne Kompressions-Overhead geladen werden kann.
Wird der Parameter file weggelassen oder auf null gesetzt, wird der GD2-Datenstrom direkt an den Browser gesendet. In diesem Fall muss zuvor der korrekte MIME-Typ mit header('Content-Type: image/gd2') gesetzt werden. Wird ein Dateipfad übergeben, wird das Bild in diese Datei geschrieben.
Über den Parameter mode lässt sich zwischen unkomprimierter Ausgabe (IMG_GD2_RAW) und komprimierter Ausgabe (IMG_GD2_COMPRESSED) wählen. Der Parameter chunk_size steuert die Blockgröße in Pixeln bei komprimierter Ausgabe.
Hinweis: Das GD2-Format ist kein Standardformat für den Einsatz im Web. Es sollte ausschließlich für Caching-Zwecke zwischen PHP-Prozessen oder zur temporären Speicherung eingesetzt werden, nicht für die Auslieferung an Endnutzer.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $image Pflicht | GdImage | Das GD-Bild-Objekt, das zuvor mit einer Funktion wie imagecreatetruecolor() oder imagecreatefromjpeg() erzeugt wurde. |
|
| $file | ?string | null | Pfad zur Zieldatei, in die das GD2-Bild geschrieben werden soll. Wird null übergeben oder der Parameter weggelassen, erfolgt die Ausgabe direkt in den Ausgabepuffer. |
| $chunk_size | int | 128 | Blockgröße in Pixeln, die bei komprimierter Ausgabe (IMG_GD2_COMPRESSED) verwendet wird. Hat bei IMG_GD2_RAW keine Auswirkung. |
| $mode | int | IMG_GD2_RAW | Gibt den Ausgabemodus an. Mögliche Werte: IMG_GD2_RAW (unkomprimiert, Standard) oder IMG_GD2_COMPRESSED (mit Kompression). |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. wenn die Zieldatei nicht geschrieben werden kann).Beispiele
GD2-Bild als Datei-Cache speichern
<?php
// Originalbild laden (z. B. JPEG)
$image = imagecreatefromjpeg('/pfad/zum/bild.jpg');
if ($image === false) {
die('Bild konnte nicht geladen werden.');
}
// Bildbearbeitung durchführen
$blau = imagecolorallocate($image, 0, 0, 255);
imagestring($image, 5, 10, 10, 'Wasserzeichen', $blau);
// Als GD2-Datei cachen (unkomprimiert, schnell ladbar)
$cacheFile = '/tmp/bild_cache.gd2';
if (imagegd2($image, $cacheFile)) {
echo 'GD2-Cache erfolgreich gespeichert: ' . $cacheFile;
} else {
echo 'Fehler beim Speichern!';
}
imagedestroy($image);
GD2-Cache laden und erneut verwenden
<?php
$cacheFile = '/tmp/bild_cache.gd2';
if (file_exists($cacheFile)) {
// Aus GD2-Cache laden (sehr schnell)
$image = imagecreatefromgd2($cacheFile);
} else {
// Originalbild laden und Cache anlegen
$image = imagecreatefromjpeg('/pfad/zum/bild.jpg');
imagegd2($image, $cacheFile, 128, IMG_GD2_COMPRESSED);
}
// Als JPEG an Browser senden
header('Content-Type: image/jpeg');
imagejpeg($image, null, 85);
imagedestroy($image);
// Wichtig · Fallstricke
Sicherheitshinweis: Das GD2-Format sollte niemals als Dateiupload von Nutzern akzeptiert werden, da manipulierte GD2-Dateien in älteren GD-Versionen zu Pufferüberläufen führen können. Nur intern erzeugte GD2-Dateien verarbeiten.
Kompatibilität: Das GD2-Format ist nicht standardisiert und ausschließlich für den Einsatz innerhalb der GD-Bibliothek vorgesehen. Es ist nicht für die Anzeige in Browsern oder anderen Anwendungen geeignet.
Ab PHP 8.0 wird anstelle einer Ressource ein GdImage-Objekt übergeben. Der Aufruf von imagedestroy() ist ab PHP 8.0 optional, da das Objekt beim Verlassen des Gültigkeitsbereichs automatisch freigegeben wird.