Start · Sprachen · PHP · Referenz · imagegd2

imagegd2

Funktion

Gibt ein GD-Bild im GD2-Format an den Browser oder in eine Datei aus.

seit PHP 4.0.7 Kategorie: image

Signatur

imagegd2(GdImage $image, ?string $file = null, int $chunk_size = 128, int $mode = IMG_GD2_RAW): bool

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

Typ
bool
Beschreibung
Gibt 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 erfolgreich gespeichert: /tmp/bild_cache.gd2

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.