Start · Sprachen · PHP · Referenz · imagegif

imagegif

Funktion

Gibt ein GD-Bildobjekt als GIF-Datei an den Browser oder in eine Datei aus.

seit PHP 4.0.0 Kategorie: image

Signatur

imagegif(GdImage $image, resource|string|null $file = null): bool

Beschreibung

imagegif() gibt das übergebene GD-Bildobjekt im GIF-Format aus. Ohne zweiten Parameter wird das Bild direkt in den Ausgabepuffer geschrieben, was typischerweise zum Senden an den Browser dient. Wird ein Dateipfad als zweiter Parameter übergeben, speichert die Funktion die GIF-Datei auf dem Dateisystem.

GIF unterstützt ausschließlich indizierte Farben mit bis zu 256 Farben pro Bild sowie eine Transparenzfarbe. Für Bilder mit vielen Farben oder halbtransparenten Pixeln ist GIF daher weniger geeignet als PNG oder WebP. Das Format ist jedoch ideal für einfache Grafiken, Icons, Logos und animierte Grafiken.

Wichtig: Bevor die Funktion ohne Dateipfad verwendet wird (also für die Browser-Ausgabe), muss der korrekte HTTP-Content-Type-Header image/gif gesendet werden. Andernfalls interpretiert der Browser die Ausgabe möglicherweise nicht als Bild.

Seit PHP 8.0 akzeptiert die Funktion ein GdImage-Objekt statt der früheren Resource. Der zweite Parameter kann seit PHP 8.0 auch null sein, um explizit die Ausgabe in den Ausgabepuffer zu erzwingen.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das GD-Bildobjekt, das ausgegeben werden soll. Wird typischerweise von Funktionen wie imagecreate() oder imagecreatefrompng() erzeugt.
$file resource|string|null null Dateipfad oder eine geöffnete Ressource, in die das Bild geschrieben wird. Wird null übergeben oder der Parameter weggelassen, erfolgt die Ausgabe direkt in den Ausgabepuffer (z. B. an den Browser).

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler, z. B. wenn die Datei nicht geschrieben werden konnte.

Beispiele

GIF-Bild direkt an den Browser senden

<?php
// Neues 200x100 Pixel großes Bild erstellen
$image = imagecreate(200, 100);

// Hintergrundfarbe festlegen (wird automatisch als erste Farbe gesetzt)
$hintergrund = imagecolorallocate($image, 255, 255, 255);

// Textfarbe festlegen
$textfarbe = imagecolorallocate($image, 0, 0, 128);

// Text ins Bild schreiben
imagestring($image, 5, 30, 40, 'Hallo GIF!', $textfarbe);

// Korrekten Content-Type-Header senden
header('Content-Type: image/gif');

// GIF an den Browser ausgeben
imagegif($image);

// Speicher freigeben
imagedestroy($image);
(GIF-Bilddaten werden an den Browser gesendet)

GIF-Bild in eine Datei speichern

<?php
// Neues 150x150 Pixel großes Bild erstellen
$image = imagecreate(150, 150);

// Hintergrundfarbe (weiß)
$hintergrund = imagecolorallocate($image, 255, 255, 255);

// Farbe für das Rechteck
$rot = imagecolorallocate($image, 220, 50, 50);

// Gefülltes Rechteck zeichnen
imagefilledrectangle($image, 20, 20, 130, 130, $rot);

// Bild als GIF-Datei speichern
$erfolg = imagegif($image, '/var/www/html/bilder/ausgabe.gif');

if ($erfolg) {
    echo 'GIF erfolgreich gespeichert.';
} else {
    echo 'Fehler beim Speichern der GIF-Datei.';
}

// Speicher freigeben
imagedestroy($image);
GIF erfolgreich gespeichert.

Transparenz in einem GIF setzen

<?php
// Bild mit indizierter Farbpalette erstellen
$image = imagecreate(100, 100);

// Hintergrundfarbe (wird als erste Farbe = Index 0 registriert)
$hintergrund = imagecolorallocate($image, 200, 200, 200);

// Transparenzfarbe festlegen
$transparent = imagecolorallocate($image, 255, 0, 255);
imagecolortransparent($image, $transparent);

// Kreis in einer anderen Farbe zeichnen
$blau = imagecolorallocate($image, 0, 100, 200);
imagefilledellipse($image, 50, 50, 80, 80, $blau);

header('Content-Type: image/gif');
imagegif($image);
imagedestroy($image);
(GIF mit transparentem Hintergrund und blauem Kreis wird ausgegeben)

// Wichtig · Fallstricke

Farbtiefe: GIF unterstützt nur 256 indizierte Farben. Wenn das Quellbild im Truecolor-Modus (imagecreatetruecolor()) erstellt wurde, konvertiert PHP es automatisch auf eine indizierte Palette, was zu Qualitätsverlusten führen kann. Für Fotos und farbintensive Bilder sollte stattdessen imagejpeg() oder imagepng() verwendet werden.

GD-Unterstützung prüfen: Die GIF-Unterstützung muss in der PHP-Installation aktiviert sein. Mit gd_info() lässt sich prüfen, ob GIF Create Support aktiviert ist.

Ausgabereihenfolge: Wenn die Funktion ohne Dateiname zur Browser-Ausgabe verwendet wird, darf vor dem header()-Aufruf keine Ausgabe (auch kein Leerzeichen oder BOM) erfolgen, da sonst der Header nicht mehr gesendet werden kann.

Animierte GIFs: imagegif() erzeugt keine animierten GIFs. Hierfür werden spezielle Bibliotheken benötigt.