Signatur
Beschreibung
imagecreatefromxbm() liest eine Bilddatei im XBM-Format (X BitMap) ein und erstellt daraus eine GD-Bildressource bzw. ab PHP 8.0 ein GdImage-Objekt. Das zurückgegebene Objekt kann anschließend mit allen GD-Funktionen wie imagecopyresampled(), imagepng() oder imagedestroy() weiterverarbeitet werden.
Das XBM-Format ist ein älteres, textbasiertes Bildformat, das ursprünglich im X Window System verwendet wird und ausschließlich Schwarz-Weiß-Bilder (1 Bit Farbtiefe) speichert. Es wird hauptsächlich für Cursors und Icons unter Unix/Linux-Systemen eingesetzt.
Die Funktion unterstützt neben lokalen Dateipfaden auch URLs (sofern der URL-Wrapper in der PHP-Konfiguration aktiviert ist). Bei Fehlern – etwa wenn die Datei nicht gefunden wird oder das Format ungültig ist – gibt die Funktion false zurück.
In modernen Anwendungen ist XBM selten anzutreffen. Der Hauptanwendungsfall ist die Migration oder Verarbeitung von Legacy-Grafikdaten, die noch im XBM-Format vorliegen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur XBM-Datei im Dateisystem oder eine URL. Bei relativen Pfaden wird das aktuelle Arbeitsverzeichnis als Basis verwendet. |
Rückgabewert
GdImage-Objekt (vor PHP 8.0 eine Ressource vom Typ gd) zurück. Im Fehlerfall – z. B. wenn die Datei nicht existiert, nicht lesbar ist oder kein gültiges XBM-Format enthält – wird false zurückgegeben.Beispiele
XBM-Datei laden und als PNG ausgeben
<?php
// XBM-Bild laden
$image = imagecreatefromxbm('/pfad/zum/bild.xbm');
if ($image === false) {
die('Fehler: XBM-Datei konnte nicht geladen werden.');
}
// Bildgröße ermitteln
$breite = imagesx($image);
$hoehe = imagesy($image);
echo "Bildgröße: {$breite} x {$hoehe} Pixel\n";
// Als PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
// Speicher freigeben
imagedestroy($image);
XBM in JPEG konvertieren und speichern
<?php
// XBM laden
$xbm = imagecreatefromxbm('/pfad/zum/symbol.xbm');
if ($xbm === false) {
die('XBM-Datei konnte nicht geladen werden.');
}
$breite = imagesx($xbm);
$hoehe = imagesy($xbm);
// Neues True-Color-Bild erstellen (für JPEG geeignet)
$jpeg = imagecreatetruecolor($breite, $hoehe);
// XBM-Inhalt auf das True-Color-Bild kopieren
imagecopy($jpeg, $xbm, 0, 0, 0, 0, $breite, $hoehe);
// Als JPEG-Datei speichern
imagejpeg($jpeg, '/pfad/zum/ausgabe.jpg', 90);
echo 'Konvertierung abgeschlossen.';
// Ressourcen freigeben
imagedestroy($xbm);
imagedestroy($jpeg);
// Wichtig · Fallstricke
Verfügbarkeit: Die Funktion ist nur verfügbar, wenn PHP mit XBM-Unterstützung kompiliert wurde (GD-Bibliothek mit --with-xbm). Unter Windows ist diese Unterstützung möglicherweise nicht in der Standardkonfiguration enthalten. Mit gd_info() kann geprüft werden, ob XBM unterstützt wird.
Farbtiefe: XBM-Bilder sind auf 1 Bit Farbtiefe (Schwarz/Weiß) beschränkt. Beim Kopieren auf ein True-Color-Bild werden die Farben entsprechend gemappt. Es ist keine Graustufen- oder Farbdarstellung möglich.
Dateiherkunft: Beim Laden von Dateien aus nicht vertrauenswürdigen Quellen (z. B. per URL) sollte der Pfad sorgfältig validiert werden, um Path-Traversal-Angriffe zu verhindern. Die Verwendung von realpath() und eine Prüfung gegen erlaubte Verzeichnisse ist empfehlenswert.