Signatur
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
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);
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.';
// 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.