Start · Sprachen · PHP · Referenz · imagecreatefromgd

imagecreatefromgd

Funktion

Erstellt ein neues <code>GdImage</code>-Objekt aus einer GD-Datei oder URL und lädt das Bild in den Speicher.

seit PHP 4.0.7 Kategorie: image

Signatur

imagecreatefromgd(string $filename): GdImage|false

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

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein 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.';
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.