BMP

Wat is een BMP-bestand?

Ongecomprimeerde Windows-bitmap. Reusachtige bestanden die scanners en oude software nog steeds uitspugen.

Wat BMP is

BMP is een binair formaat dat alleen iets betekent voor een programma dat het kent. Het bewaart een raster van beeldpunten, dus het wordt zacht zodra je het verder vergroot dan zijn eigen resolutie. Het wordt gebruikt voor gegevens tussen programma’s verplaatsen.

De extensie is .bmp en de volledige naam Windows Bitmap. Allebei zeggen ze minder dan wat het bestand kan bevatten, en daar gaat de rest van deze pagina over.

Waar BMP vandaan komt

Microsoft bracht het in 1987 uit.

Aan een formaat dat zo lang leesbaar is gebleven kun je iets toevertrouwen dat je over tien jaar terug wilt hebben.

De specificatie is gepubliceerd, maar door de eigenaar

Hij staat op papier en is uitvoerbaar, maar hoe de volgende versie eruitziet bepaalt de leverancier. In de praktijk is dat genoeg om het bestand te blijven openen; het is niet genoeg om erop te rekenen.

Het is een verouderd formaat

Het gaat overal nog open en oudere programma’s schrijven het nog, maar er wordt niets nieuws meer omheen gebouwd. Converteer wat je wilt bewaren en kies het niet voor iets dat vandaag begint.

Er wordt niets weggegooid

BMP bewaart zijn inhoud precies. Opnieuw opslaan verandert niets, dus je kunt het zo vaak openen, bewerken en wegschrijven als je wilt zonder dat er schade opstapelt — en dat is wat er een werkformaat van maakt in plaats van een afleverformaat.

Het kan niet doorzichtig zijn

BMP heeft nergens plaats om doorzichtigheid vast te leggen. Wat in de bron doorscheen wordt bij het converteren met een egale kleur gevuld — wit, tenzij er iets anders gekozen wordt.

Welke kleur het kan beschrijven

Tot 8 bits per kanaal. Het kan werken in RGB en een geïndexeerd palet.

Acht bits per kanaal is wat een scherm laat zien en wat vrijwel elk afleverformaat meebrengt.

Wat BMP opent

Microsoft Paint, GIMP en IrfanView lezen het, en de meeste programma’s van dezelfde soort ook.

Als een bestand niet opengaat ligt het zelden aan het formaat — vaker is het programma ouder dan het formaat. Converteren naar iets ouders is de betrouwbare weg eromheen, en daarvoor is de rest van deze site bedoeld.

Het in de browser openen

Elke actuele browser leest het.

Je kunt het dus zonder zorgen op een pagina zetten of aan een bericht hangen, zonder je af te vragen wat de andere kant geïnstalleerd heeft.

Het is een afleverformaat

BMP is bedoeld om door te geven, niet om in te werken. Er een bewerken kan en is zelden prettig; de verstandige weg loopt via de bron en een nieuwe export.

Wat er misgaat

De terugkerende klachten: de bestanden zijn groot voor wat erin staat.

Niets daarvan is een reden om het formaat te mijden. Het zijn de dingen die je beter kent voordat een ervan je verrast, en dat is een andere en een nuttigere bewering.

Geen compressie, en de omvang is rekenkunde

Een BMP slaat elke pixel op als een letterlijke kleurwaarde, op volgorde, zonder iets slims. Dat maakt de bestandsgrootte voorspelbaar tot op de byte: breedte maal hoogte maal bytes per pixel, plus een kleine header. Een beeld van 1920 bij 1080 op 24 bits per pixel is ongeveer 6,2 megabyte, ongeacht of het een foto of een effen wit vlak toont.

Die ene eigenschap verklaart elke klacht over het formaat. Een schermafbeelding die 200 kilobyte zou zijn als PNG is meerdere megabytes als BMP. Er is niets fout gegaan — het formaat had nooit een manier om iets kleiner te maken.

De rijen staan ondersteboven opgeslagen

Een BMP slaat zijn rijen conventioneel op van onderaan het beeld naar boven. De reden is historisch, en verklaart waarom een door naïeve code geschreven BMP soms verticaal gespiegeld verschijnt.

De header kan de omgekeerde volgorde declareren met een negatieve hoogte, en sommige software schrijft het zo. Beide zijn geldig — een eerlijke samenvatting van het formaat: eenvoudig genoeg om in een middag te implementeren, met genoeg variatie dat implementaties aan de randen verschillen.

De header komt in verschillende versies

De originele header uit 1990 is 40 bytes en beschrijft afmetingen, kleurdiepte en weinig anders. Latere versies breiden dat uit naar 108 en 124 bytes voor kleurruimte-informatie en een alfakanaal.

De meeste lezers verwerken de gangbare gevallen, en sommige de uitgebreide niet. Opent een BMP in het ene programma en weigert het andere, dan is een verschil in headerversie meestal de verklaring, geen beschadiging.

Transparantie bestaat op papier

De 32-bit varianten hebben ruimte voor een alfakanaal en de uitgebreide headers kunnen dat correct beschrijven. In de praktijk is de ondersteuning onbetrouwbaar genoeg dat transparantie in een BMP niet te vertrouwen is: veel lezers negeren de vierde byte volledig en tonen het beeld ondoorzichtig.

Heeft een beeld een transparante achtergrond nodig, dan is BMP de verkeerde container en PNG de juiste. Een BMP die transparantie claimt omzetten naar PNG is ook de betrouwbare manier om te ontdekken of die transparantie er ooit echt was.

De gecomprimeerde varianten die niemand gebruikt

BMP definieert wel twee run-length-coderingen, voor 4-bit en 8-bit beelden. Ze werken en worden vrijwel nooit gebruikt, omdat ze alleen op lage kleurdiepten van toepassing zijn en PNG intussen al bestond en beter was.

Een BMP die je tegenkomt is dus vrijwel zeker ongecomprimeerd. Dat is een redelijke aanname, en het verklaart waarom omzetten naar PNG zo betrouwbaar een dramatische verkleining oplevert zonder verlies.

Waar het bestand voor je vandaan komt

Scanners en scansoftware, vooral oudere of industriële. Medische en laboratoriuminstrumenten, die formaten verkiezen die triviaal te schrijven zijn. Windows-hulpprogramma’s en schermopnametools van een bepaalde leeftijd. Ingebedde systemen en machine vision.

En software uit de jaren negentig die nooit een reden had om te veranderen. De gemeenschappelijke draad is een voorkeur voor eenvoud boven omvang.

Het zit nog steeds in Windows

Het Windows-klembord gebruikt een van BMP afgeleide structuur voor beelden, dus een afbeelding tussen toepassingen kopiëren stuurt iets heel dicht bij dit formaat. Pictogrambestanden bevatten BMP-data.

Daarom is het formaat niet verdwenen en zal het dat ook niet: het is eigenlijk geen bestandsformaat meer zozeer als de manier waarop Windows een ongecomprimeerd beeld intern voorstelt.

Waar naartoe omzetten

PNG, in bijna elk geval. Het is verliesvrij, dus elke pixel komt exact aan zoals hij was, en het comprimeert — een schermafbeelding komt vaak op een kleine fractie van de BMP-omvang uit zonder enig zichtbaar verschil.

JPG alleen wanneer het beeld een foto is en omvang zwaarder telt dan exactheid. Voor een gescand document, een schermafbeelding of lijntekening is PNG strikt beter en maakt JPG de tekstranden slechter.

Grote bestanden, lokaal omgezet

De reden om een BMP om te zetten is vrijwel altijd dat hij te groot is om te verplaatsen, wat uploaden naar een converter een slechte oplossing maakt — de upload is het trage deel.

Omzetten in de browser vermijdt de upload: er wordt niets verstuurd. De gratis grens is honderd megabyte per bestand, honderd bestanden tegelijk, en bij drie bytes per pixel bereikt een 24-bit BMP die grens rond de 35 megapixels — net onder een 600-dpi kleurenscan van A4.

De gegevens, op één plek

Kenmerken en herkomst van het formaat BMP.
Extensie.bmp, .dib
Mediatypeimage/bmp
Uitgegeven doorMicrosoft
Voor het eerst gepubliceerd1987