Start · Sprachen · PHP · Referenz · imagegd

imagegd

Funktion

Gibt ein <code>GdImage</code>-Objekt im nativen GD-Format (GD1) an den Browser oder in eine Datei aus.

seit PHP 4.0.7 Kategorie: image

Signatur

imagegd(GdImage $image, string|null $filename = null): bool

Beschreibung

imagegd() speichert oder sendet ein Bild im proprietären GD-Format (GD1). Dieses Format dient ausschließlich dem internen Datenaustausch zwischen GD-basierten PHP-Anwendungen und ist nicht für die Anzeige im Browser oder den Austausch mit anderen Programmen gedacht.

Wird kein Dateiname angegeben (oder null übergeben), wird die Bilddatei direkt in den Ausgabepuffer geschrieben. In diesem Fall sollte vor dem Aufruf ein passender HTTP-Header wie Content-Type: image/gd gesendet werden, obwohl Browser diesen Typ in der Regel nicht anzeigen können.

Das GD1-Format eignet sich vor allem dazu, Zwischenergebnisse aufwändig gerenderter Bilder temporär auf dem Dateisystem zu cachen, damit sie bei einem späteren Request schnell wieder geladen werden können – etwa mit imagecreatefromgd(). Im Vergleich zur PNG- oder JPEG-Speicherung entfällt die Kompressions-/Dekompressions-Latenz vollständig.

Für modernere Anwendungsfälle empfiehlt sich statt GD1 das GD2-Format über imagegd2(), das effizienter und kompakter ist.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das zu speichernde oder auszugebende GdImage-Objekt, das zuvor z. B. mit imagecreatetruecolor() oder imagecreatefromjpeg() erzeugt wurde.
$filename string|null null Pfad zur Zieldatei, in die das Bild geschrieben wird. Wird null oder kein Argument übergeben, erfolgt die Ausgabe direkt in den PHP-Ausgabepuffer.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. fehlende Schreibrechte auf die Zieldatei oder ungültiges Bild-Ressource).

Beispiele

Bild im GD-Format auf dem Dateisystem cachen

<?php
// Aufwändig erzeugtes Bild generieren
$image = imagecreatetruecolor(200, 200);
$blau  = imagecolorallocate($image, 0, 0, 255);
imagefill($image, 0, 0, $blau);

$cacheFile = '/tmp/mein_cache.gd';

// Bild im GD1-Format in eine Datei schreiben
if (imagegd($image, $cacheFile)) {
    echo "Bild erfolgreich als GD1-Datei gespeichert: $cacheFile";
} else {
    echo "Fehler beim Speichern!";
}

imagedestroy($image);
Bild erfolgreich als GD1-Datei gespeichert: /tmp/mein_cache.gd

Gecachtes GD-Bild erneut laden und als PNG ausgeben

<?php
$cacheFile = '/tmp/mein_cache.gd';

if (file_exists($cacheFile)) {
    // GD1-Datei einlesen
    $image = imagecreatefromgd($cacheFile);

    // Als PNG an den Browser senden
    header('Content-Type: image/png');
    imagepng($image);
    imagedestroy($image);
} else {
    echo "Cache-Datei nicht gefunden.";
}

// Wichtig · Fallstricke

Sicherheitshinweis: Das GD1-Format enthält unkomprimierte Rohdaten des Bildes und sollte niemals über das Web öffentlich zugänglich sein. Speichern Sie GD-Cache-Dateien stets außerhalb des Document-Root oder schützen Sie das Verzeichnis mit geeigneten Zugriffskontrollen.

Deprecation: Ab PHP 8.0 wurden GD-Ressourcen durch GdImage-Objekte ersetzt. Der Funktionsaufruf selbst ist jedoch weiterhin verfügbar.

Das GD1-Format ist nicht dasselbe wie GD2. Dateien, die mit imagegd() erzeugt wurden, können nicht mit imagecreatefromgd2() geladen werden – dafür ist imagecreatefromgd() zu verwenden.