Start · Sprachen · PHP · Referenz · imagexbm

imagexbm

Funktion

Gibt ein GD-Bild im XBM-Format (X BitMap) an den Browser oder in eine Datei aus.

seit PHP 5.0.0 Kategorie: image

Signatur

imagexbm(GdImage $image, ?string $filename, ?int $foreground_color = null): bool

Beschreibung

imagexbm() exportiert ein GD-Bildobjekt im XBM-Format, einem textbasierten Bitmap-Format, das ursprünglich im X Window System verwendet wurde. Das Bild wird entweder direkt an den Browser (Standard-Output) gesendet oder in eine Datei geschrieben, wenn ein Dateiname übergeben wird.

XBM ist ein monochromes Format – das heißt, das Bild wird in Schwarz-Weiß dargestellt. Mit dem optionalen Parameter foreground_color kann festgelegt werden, welche Farbe als Vordergrundfarbe (schwarz / gesetzt) gilt. Pixel, die dieser Farbe entsprechen, werden als gesetzte Bits dargestellt; alle anderen Pixel gelten als Hintergrund (weiß / nicht gesetzt).

Für die Ausgabe an den Browser sollte zuvor der korrekte Content-Type-Header gesendet werden: header('Content-Type: image/x-xbitmap');. Das XBM-Format ist heute kaum noch in modernen Anwendungen anzutreffen und eignet sich allenfalls für spezialisierte Anwendungsfälle oder Kompatibilität mit Legacy-Systemen.

Das erzeugte XBM besteht aus einem C-ähnlichen Header mit #define-Anweisungen sowie einem Array mit den Bitmap-Daten. Der Name des Arrays leitet sich aus dem Dateinamen ab.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das GD-Bildobjekt, das ausgegeben werden soll. Wird z. B. mit imagecreate() oder imagecreatefromxbm() erzeugt.
$filename Pflicht ?string null Pfad zur Zieldatei, in die das Bild geschrieben wird. Wird null übergeben, wird das Bild direkt an den Standard-Output (Browser) gesendet.
$foreground_color ?int null Ein Farbbezeichner (wie er von imagecolorallocate() zurückgegeben wird), der als Vordergrundfarbe (gesetzte Bits) verwendet wird. Wird null übergeben oder weggelassen, wird Schwarz als Standard-Vordergrundfarbe genutzt.

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

XBM-Bild an den Browser ausgeben

<?php
// Einfaches 32x32-Bild erzeugen
$image = imagecreate(32, 32);

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

// Vordergrundfarbe (schwarz)
$black = imagecolorallocate($image, 0, 0, 0);

// Ein Kreuz in die Mitte zeichnen
imageline($image, 0, 16, 31, 16, $black);
imageline($image, 16, 0, 16, 31, $black);

// Korrekte HTTP-Header setzen
header('Content-Type: image/x-xbitmap');

// Als XBM ausgeben – Vordergrundfarbe: Schwarz
imagexbm($image, null, $black);

// Speicher freigeben
imagedestroy($image);

XBM-Bild in eine Datei speichern

<?php
// 16x16-Bild erstellen
$image = imagecreate(16, 16);

$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

// Rahmen zeichnen
imagerectangle($image, 0, 0, 15, 15, $black);

// In eine Datei exportieren
$result = imagexbm($image, '/tmp/rahmen.xbm', $black);

if ($result) {
    echo "XBM-Datei erfolgreich gespeichert.";
} else {
    echo "Fehler beim Speichern der XBM-Datei.";
}

imagedestroy($image);
XBM-Datei erfolgreich gespeichert.

// Wichtig · Fallstricke

Monochromes Format: XBM unterstützt nur zwei Farben (Vordergrund und Hintergrund). Alle Farbinformationen eines Truecolor- oder Paletten-Bildes werden beim Export auf Schwarz/Weiß reduziert.

Dateiname und Array-Name: Der Name des internen C-Arrays im erzeugten XBM wird aus dem Dateinamen abgeleitet. Sonderzeichen im Dateinamen können dabei zu ungültigem XBM-Output führen. Bei der Ausgabe an den Browser (null als Dateiname) verwendet PHP intern einen leeren String, was zu einem Array-Namen _bits führt.

Verbreitung: XBM ist ein sehr altes Format und wird von modernen Browsern und Anwendungen kaum noch unterstützt. Für die meisten Web-Anwendungen sind imagepng(), imagejpeg() oder imagewebp() die bessere Wahl.