Signatur
Beschreibung
imagecreatefromgd() liest eine Bilddatei im GD-Format (Erweiterung .gd) ein und gibt ein GdImage-Objekt zurück, mit dem alle weiteren GD-Funktionen arbeiten können. Das GD-Format ist ein proprietäres Format der GD-Bibliothek und eignet sich vor allem für sehr schnelle Lade- und Speicheroperationen, da keine verlustbehaftete Komprimierung stattfindet.
Der Parameter $filename kann ein lokaler Dateipfad oder – sofern in der PHP-Konfiguration aktiviert – eine URL sein. Das GD-Format wird hauptsächlich in Szenarien eingesetzt, in denen Bilder zwischen PHP-Skripten oder als Cache-Format ausgetauscht werden, da das Laden deutlich schneller ist als bei PNG oder JPEG.
Im Gegensatz zu imagecreatefromgd2(), das das GD2-Format unterstützt, liest diese Funktion das ältere GD1-Format ein. In modernen Anwendungen wird das GD2-Format bevorzugt, da es Komprimierung unterstützt und weniger Speicher benötigt.
Das zurückgegebene GdImage-Objekt sollte nach der Verwendung mit imagedestroy() (PHP < 8.0) bzw. durch Freigabe des Objekts freigegeben werden, um Speicherlecks zu vermeiden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur GD-Datei oder eine URL. Bei URLs muss allow_url_fopen in der PHP-Konfiguration aktiviert sein. |
Rückgabewert
GdImage-Objekt zurück. Im Fehlerfall (Datei nicht gefunden, ungültiges Format etc.) wird false zurückgegeben.Beispiele
GD-Datei laden und als PNG ausgeben
<?php
// Bild aus GD-Datei laden
$image = imagecreatefromgd('/var/cache/images/bild.gd');
if ($image === false) {
die('Fehler: GD-Datei konnte nicht geladen werden.');
}
// Bild als PNG an den Browser senden
header('Content-Type: image/png');
imagepng($image);
// Speicher freigeben (wichtig bei PHP < 8.0)
imagedestroy($image);
GD-Datei bearbeiten und als JPEG speichern
<?php
// Vorhandene GD-Datei laden
$source = imagecreatefromgd('/tmp/vorlage.gd');
if ($source === false) {
die('GD-Datei konnte nicht geöffnet werden.');
}
$breite = imagesx($source);
$hoehe = imagesy($source);
// Neues Bild in halber Größe erstellen
$ziel = imagecreatetruecolor((int)($breite / 2), (int)($hoehe / 2));
// Bild skalieren
imagecopyresampled(
$ziel, $source,
0, 0, 0, 0,
(int)($breite / 2), (int)($hoehe / 2),
$breite, $hoehe
);
// Als JPEG speichern
imagejpeg($ziel, '/tmp/vorschau.jpg', 85);
imagedestroy($source);
imagedestroy($ziel);
echo 'Vorschaubild erfolgreich erstellt.';
// Wichtig · Fallstricke
Sicherheitshinweis: Akzeptieren Sie niemals Dateinamen direkt aus Benutzereingaben, ohne diese zu validieren. Ein Angreifer könnte andernfalls beliebige Dateien auf dem System lesen (Path-Traversal-Angriff). Verwenden Sie basename() und prüfen Sie den Pfad mit realpath().
URL-Zugriff: Das Laden von URLs ist nur möglich, wenn in der php.ini die Option allow_url_fopen = On gesetzt ist. In sicherheitssensiblen Umgebungen sollte diese Option deaktiviert bleiben.
Format-Kompatibilität: Das GD1-Format wird von modernen GD-Versionen kaum noch genutzt. Für neue Projekte empfiehlt sich imagecreatefromgd2() mit dem GD2-Format oder gängigere Formate wie PNG (imagecreatefrompng()).
PHP 8.0+: Ab PHP 8.0 gibt die Funktion bei Erfolg ein GdImage-Objekt zurück (statt einer Ressource). imagedestroy() ist ab PHP 8.0 nicht mehr notwendig, wird aber weiterhin unterstützt.