Start · Sprachen · PHP · Referenz · imagecreatefromgif

imagecreatefromgif

Funktion

Erstellt ein neues GD-Bildobjekt aus einer GIF-Datei oder URL und gibt eine <code>GdImage</code>-Ressource zurück.

seit PHP 4.0.0 Kategorie: image

Signatur

imagecreatefromgif(string $filename): GdImage|false

Beschreibung

imagecreatefromgif() liest eine GIF-Datei vom Dateisystem oder über eine URL (sofern allow_url_fopen aktiv ist) ein und gibt ein GdImage-Objekt zurück, das anschließend mit allen GD-Bildfunktionen weiterverarbeitet werden kann. Die Funktion unterstützt sowohl GIF87a- als auch GIF89a-Dateien, einschließlich transparenter Bilder.

Typische Anwendungsfälle sind das Lesen vorhandener GIF-Bilder, um diese zu skalieren, zuzuschneiden, mit Wasserzeichen zu versehen oder in andere Formate (z. B. PNG oder JPEG) zu konvertieren. Das zurückgegebene Bild behält die Original-Paletteninformationen (bis zu 256 Farben) bei; es handelt sich um ein Palettenbild, kein Truecolor-Bild.

Ab PHP 8.0 gibt die Funktion ein GdImage-Objekt zurück, das automatisch beim Verlassen des Gültigkeitsbereichs freigegeben wird. In älteren PHP-Versionen wurde eine Ressource zurückgegeben, die explizit mit imagedestroy() freigegeben werden musste.

Soll ein animiertes GIF verarbeitet werden, lädt imagecreatefromgif() nur den ersten Frame des Animations. Für vollständige GIF-Animationsverarbeitung sind spezialisierte Bibliotheken notwendig.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Pfad zur GIF-Datei auf dem Dateisystem oder eine gültige URL (z. B. https://example.com/bild.gif), wenn allow_url_fopen in der PHP-Konfiguration aktiviert ist.

Rückgabewert

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein GdImage-Objekt zurück. Im Fehlerfall (Datei nicht gefunden, ungültiges Format, keine GD-GIF-Unterstützung) wird false zurückgegeben und eine PHP-Warnung ausgegeben.

Beispiele

GIF-Bild laden und als PNG ausgeben

<?php
// GIF laden
$image = imagecreatefromgif('logo.gif');

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

// Dimensionen ermitteln
$breite = imagesx($image);
$hoehe  = imagesy($image);
echo "Bildgröße: {$breite} x {$hoehe} Pixel\n";

// Als PNG im Browser ausgeben
header('Content-Type: image/png');
imagepng($image);

// Ab PHP 8.0 automatische Freigabe;
// für ältere Versionen: imagedestroy($image);
Bildgröße: 200 x 100 Pixel

GIF skalieren und als neues GIF speichern

<?php
// Original-GIF laden
$quelle = imagecreatefromgif('original.gif');

if ($quelle === false) {
    die('GIF konnte nicht geladen werden.');
}

$neueBreite  = 150;
$neueHoehe   = 75;

// Neues Truecolor-Canvas erstellen
$ziel = imagecreatetruecolor($neueBreite, $neueHoehe);

// Transparenz erhalten
$transparentFarbe = imagecolortransparent($quelle);
if ($transparentFarbe >= 0) {
    $rgb   = imagecolorsforindex($quelle, $transparentFarbe);
    $neuTr = imagecolorallocate($ziel, $rgb['red'], $rgb['green'], $rgb['blue']);
    imagefill($ziel, 0, 0, $neuTr);
    imagecolortransparent($ziel, $neuTr);
}

// Bild skalieren
imagecopyresampled(
    $ziel, $quelle,
    0, 0, 0, 0,
    $neueBreite, $neueHoehe,
    imagesx($quelle), imagesy($quelle)
);

// Ergebnis als GIF speichern
imagegif($ziel, 'skaliert.gif');
echo 'Bild erfolgreich skaliert und gespeichert.';
Bild erfolgreich skaliert und gespeichert.

// Wichtig · Fallstricke

Sicherheitshinweis: Wird $filename aus einer Benutzereingabe übernommen, muss der Pfad unbedingt validiert und bereinigt werden, um Path-Traversal-Angriffe (z. B. ../../etc/passwd) zu verhindern. Niemals ungeprüfte Benutzereingaben direkt übergeben.

URL-Unterstützung: Das Laden von externen URLs mittels allow_url_fopen kann ein Sicherheitsrisiko darstellen und sollte in Produktionsumgebungen mit Vorsicht eingesetzt werden.

Animierte GIFs: Die Funktion gibt nur den ersten Frame eines animierten GIFs zurück. Alle weiteren Frames gehen verloren.

GD-Kompilierung: GIF-Unterstützung ist in GD seit Version 2.0.28 standardmäßig enthalten. Bei selbst kompilierten PHP-Installationen kann die Unterstützung fehlen — in diesem Fall gibt die Funktion stets false zurück. Mit gd_info() lässt sich prüfen, ob GIF-Unterstützung vorhanden ist.