Start · Sprachen · PHP · Referenz · imagecreatefromgd2

imagecreatefromgd2

Funktion

Erstellt ein neues <code>GdImage</code>-Objekt aus einer GD2-Datei oder URL und gibt es zurück.

seit PHP 4.0.7 Kategorie: image

Signatur

imagecreatefromgd2(string $filename): GdImage|false

Beschreibung

imagecreatefromgd2() lädt ein Bild im GD2-Format (ein natives, binäres Format der GD-Grafikbibliothek) aus einer lokalen Datei oder einer URL und gibt ein GdImage-Objekt zurück, mit dem anschließend alle GD-Zeichenfunktionen genutzt werden können.

Das GD2-Format speichert Bilder verlustfrei und unterstützt dabei interne Kompression, was es für den schnellen Austausch von Zwischenergebnissen in Bild-Verarbeitungs-Pipelines geeignet macht. Im Gegensatz zu JPEG, PNG oder GIF ist GD2 jedoch kein weit verbreitetes Austauschformat und sollte daher nur für interne Zwecke eingesetzt werden.

Typische Anwendungsfälle sind das Zwischenspeichern von bearbeiteten Bildern auf der Festplatte (z. B. mit imagegd2()) und das spätere Wiederherstellen, um rechenintensive Operationen zu vermeiden. URLs werden über den PHP-Stream-Wrapper geladen, sofern allow_url_fopen in der php.ini aktiviert ist.

Ab PHP 8.0 gibt die Funktion bei einem Fehler false zurück und wirft zusätzlich eine ValueError-Ausnahme, wenn das Bild nicht geöffnet werden kann. In älteren Versionen wurde lediglich false zurückgegeben.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Pfad zur GD2-Datei oder URL (z. B. 'bild.gd2' oder 'http://example.com/bild.gd2'). Bei URLs muss allow_url_fopen in der php.ini aktiviert sein.

Rückgabewert

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein GdImage-Objekt zurück, das die geladene Bildressource repräsentiert. Im Fehlerfall (z. B. Datei nicht gefunden oder ungültiges Format) wird false zurückgegeben.

Beispiele

GD2-Datei laden und als PNG ausgeben

<?php
// Bild aus einer GD2-Datei laden
$image = imagecreatefromgd2('/tmp/zwischenspeicher.gd2');

if ($image === false) {
    die('Fehler: GD2-Datei konnte nicht geladen werden.');
}

// Bild als PNG an den Browser senden
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

Bearbeitetes Bild als GD2 zwischenspeichern und wiederherstellen

<?php
$tmpFile = '/tmp/bild_cache.gd2';

// Schritt 1: Bild erzeugen und als GD2 speichern
$original = imagecreatetruecolor(200, 100);
$blau = imagecolorallocate($original, 30, 100, 200);
imagefilledrectangle($original, 0, 0, 199, 99, $blau);
imagegd2($original, $tmpFile);
imagedestroy($original);

// Schritt 2: GD2-Cache laden und weiterverarbeiten
$cached = imagecreatefromgd2($tmpFile);

if ($cached !== false) {
    $weiss = imagecolorallocate($cached, 255, 255, 255);
    imagestring($cached, 5, 50, 40, 'Hallo Welt', $weiss);

    header('Content-Type: image/png');
    imagepng($cached);
    imagedestroy($cached);
} else {
    echo 'Laden des GD2-Caches fehlgeschlagen.';
}
?>

// Wichtig · Fallstricke

Sicherheitshinweis: Laden Sie niemals GD2-Dateien aus nicht vertrauenswürdigen Quellen, da manipulierte GD2-Dateien in älteren GD-Bibliotheksversionen Pufferüberlauf-Schwachstellen auslösen können. Validieren Sie den Ursprung der Datei immer sorgfältig.

URL-Laden: Das Laden per URL erfordert, dass allow_url_fopen = On in der php.ini gesetzt ist. In Produktionsumgebungen ist diese Einstellung aus Sicherheitsgründen oft deaktiviert.

Portabilität: Das GD2-Format ist nicht für den öffentlichen Austausch geeignet. Nutzen Sie es ausschließlich für interne Caching-Mechanismen oder temporäre Datenspeicherung innerhalb derselben PHP/GD-Installation.

Vergessen Sie nicht, das zurückgegebene GdImage-Objekt nach der Verwendung mit imagedestroy() freizugeben (in PHP < 8.0 war dies besonders wichtig, um Speicherlecks zu vermeiden).