Een XBM of X-BitMap Graphic is een type computerafbeelding. Het bestandstype werd oorspronkelijk ontworpen voor gebruik in het X Window System om de iconen van het besturingssysteem mee weer te geven. Afbeeldingen in het XBM formaat zijn monochroom, een pixel is zwart of transparant. Om kleuren te kunnen toevoegen, is de afgeleide indeling van X-PixMap Graphic of XPM ontwikkeld.

X BitMap
XBM
Bestandsextensie xbm
MIME-type image/xbitmap
image/xbm
image/x-xbitmap
image/x-xbm
Portaal  Portaalicoon   Informatica

Bijzonder is, dat de informatie in het bestand wordt opgeslagen als ASCII tekst, met een teksteditor bewerkt kan worden, en zo een geïntegreerd deel kan uitmaken van de broncode van een programma dat is geschreven in bijvoorbeeld C of C++, dan wel een PHP-script of Javascript.

Het eerste plaatje op het internet moet een XBM geweest zijn, of een GIF. Dat waren de types die de eerste Mosaic webbrowser kende. Mede omdat XBM geen datacompressie toepast, werden al gauw nieuwe en rechtenvrije standaarden zoals JPEG ontwikkeld om het web zijn kleur te geven.[1] De meeste browsers begrijpen het (overigens nergens officieel vastgelegde) MIME-type "image/x-xbitmap" en kunnen de afbeeldingen weergeven. De ondersteuning is echter niet meer ingebouwd in Internet Explorer versie 6 of hoger.

Er bestaan twee versies, X10 en sinds 1986 ook X11. Het verschil zit in de wijze waarop de pixelgegevens worden genoteerd. In X10 staan 16-bit WORDs, waar in X11 8-bit BYTEs geschreven worden. De schrijfwijze van X10 wordt beschouwd als verouderd.[2]

Voorbeeld bewerken

Een bestand met de naam klokje.xbm bevat de volgende tekst:

#define klok_width 16
#define klok_height 16
static char klok_bits[] = {
0xc0,0x03,0x2c,0x04,0xec,0x07,0xc8,0x03,0xe8,0x0f,0x18,0x14,0x04,0x2a,0x04,0x2b,
0x82,0x51,0xc2,0x50,0xc2,0x50,0x82,0x51,0x04,0x29,0x04,0x38,0x1e,0x7e,0xe6,0x6f }

Na opgave van de breedte en hoogte op conventionele decimale wijze volgen de gegevens van de pixels zelf in hexadecimale notatie. De gegevens worden in het XBM bestand in achttallen opgeslagen. Een punt kan zwart of niet zijn, 0 of 1. Twee punten kunnen dan op vier manieren gekleurd zijn, 00, 01, 10 en 11. Met drie punten zijn er acht mogelijkheden en met vier al zestien, of 0xf hexadecimaal. Een reeks van acht punten kan op zo 256 manieren worden ingevuld, of 0xff hexadecimaal.

Een grafisch programma doet het nodige rekenwerk achter de schermen van een virtueel tekenbord.[3]

De syntaxis om deze afbeelding in een HTML-pagina op te nemen, is niet anders dan ze is voor andere afbeeldingen:

<img src="klokje.xbm" alt="Klokje" width="16" height="16">

Het kan ook direct:

<img alt="Klokje" width="16" height="16" src="javascript:
'#define klok_width 16\n#define klok_height 16\nstatic char klok_bits[] = {
0xc0,0x03,0x2c,0x04,0xec,0x07,0xc8,0x03,0xe8,0x0f,0x18,0x14,0x04,0x2a,0x04,0x2b,
0x82,0x51,0xc2,0x50,0xc2,0x50,0x82,0x51,0x04,0x29,0x04,0x38,0x1e,0x7e,0xe6,0x6f };'">