Start · Sprachen · PHP · Referenz · imagecreatefromxbm

imagecreatefromxbm

Funktion

Lädt eine XBM-Bilddatei und gibt ein <code>GdImage</code>-Objekt zurück, das für weitere GD-Bildoperationen verwendet werden kann.

seit PHP 5.0.0 Kategorie: image

Signatur

imagecreatefromxbm(string $filename): GdImage|false

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

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein 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);
Bildgröße: 32 x 32 Pixel

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);
Konvertierung abgeschlossen.

// 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.