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