128.191.178 bestanden
4,6 Trustpilot
sinds 2013

Alles over PBM bestanden

0.0/5(0 stemmen)

PBM is waarschijnlijk het eenvoudigste afbeeldingsformaat ter wereld. Het bestaat alleen uit 0-en en 1-en, waarbij elk cijfer overeenkomt met een pixel. De rij en kolom in de tekst bepalen de positie in de afbeelding. Zo kun je zelfs afbeeldingen maken met een teksteditor. Bijna net alsof je met een potlood ruitjespapier inkleurt. PBM ondersteunt geen compressie, geen alfakanalen en geen kleuren. Zelfs geen grijstinten. Het kan alleen maar een pixel tekenen (1) of juist niet (0).

TLDR:

PBM-bestanden maken deel uit van een grotere familie van bestandsformaten. Het formaat en de verwante formaten worden momenteel nog steeds gebruikt, maar ze zijn niet bijzonder geschikt om te delen of voor permanente archivering. Ze zijn groot, worden door weinig software daadwerkelijk ondersteund, maar ze zijn zeer flexibel en prestatiegericht. Wie een PBM-bestand vindt, heeft waarschijnlijk een tussenproduct of een voor onderwijsdoeleinden gemaakte afbeelding in handen. Het PBM-formaat is namelijk zeer geschikt voor illustratieve doeleinden; het spreekt praktisch voor zich.

De geschiedenis van PBM-bestanden

PBM werd in de jaren 80 uitgevonden door Jef Poskanzer, een programmeur uit Berkeley die een eenvoudig probleem wilde oplossen: afbeeldingen via e-mail versturen. In de jaren 80 was e-mail nog niet zo ver ontwikkeld als vandaag. Alleen ASCII-tekens konden betrouwbaar worden verzonden; binaire bestanden zoals afbeeldingen raakten onderweg vaak beschadigd. Poskanzer ontwierp met PBM dus een afbeeldingsformaat dat precies dit probleem oploste.

De technische opbouw

Een PBM-afbeelding bestaat in zijn Plain-variant (P1) uit precies drie delen: het Magic Number, de afmetingen en de eigenlijke pixelgegevens. Optioneel kunnen opmerkingen worden gebruikt, bijvoorbeeld voor de inhoud.

Onderdeel Voorbeeld Betekenis
Magic Number P1 Plain PBM (ASCII-variant)
Opmerking # mein bild Optioneel, ingeleid door # ingeleid
Breedte Hoogte 24 7 Afmetingen in pixels
Rastergegevens 0 1 1 0 ... 1 = zwart, 0 = wit

Het volgende voorbeeld toont een volledige afbeelding uit de documentatie:

P1
# feep.pbm
24 7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0
0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0
0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(0'en zijn alleen iets donkerder weergegeven voor een betere visualisatie)

Tussen de nullen en enen is duidelijk de tekst FEEP te herkennen. PBM komt dus overeen met binaire ASCII ;).

Plain vs. Raw: P1 en P4

Poskanzer heeft later een binaire variant geïntroduceerd en deze tot de standaarduitvoer van de Netpbm-tools gemaakt. De Plain-variant (P1) kwam historisch gezien eerst, maar werd vervangen vanwege de veel grotere benodigde opslagruimte ("lavishly wasteful" – "extreem verspillend").

Eigenschap Plain PBM (P1) Raw PBM (P4)
Pixelgegevens ASCII-tekens 0 en 1 bits, 8 per byte verpakt
Leesbaar voor mensen Ja, volledig Alleen de header
Opslagruimte per pixel ~2 bytes (teken + witruimte) 1/8 byte (1 bit)
Max. regellengte 70 tekens aanbevolen Geen limiet
Afbeeldingen per bestand Precies 1 Meerdere mogelijk (sinds juli 2000)

Tegenwoordig wordt de hele PBM-familie, en met name PPM, vaak als tussenformaat gebruikt. In het eenvoudigste en kortste van alle toepassingsgevallen bestaat het alleen in een pipe tussen twee programma's, dus alleen voor de uitvoeringstijd zelf. Daarmee komen we ook bij de sterke punten van het formaat:

Sterke punten van PBM-bestanden

  • Geen afhankelijkheden: geen decoder, geen bibliotheek. Een paar regels C, Python of Shell zijn voldoende om te lezen en te schrijven.
  • Unix-filosofie: PBM-tools zijn filters. Je koppelt ze aan elkaar: cat bild.pbm | pbmtopgm | ppmtojpeg > out.JPG. Meer dan 330 programma's in het Netpbm-pakket werken op deze manier.
  • Pedagogiek: wie beeldverwerking (niet beeldbewerking) wil begrijpen, begint idealiter met PBM.
  • Robuust: geen kapotte header, geen beschadigde chunk. Er staat zo weinig in dat er nauwelijks iets mis kan gaan. En mocht er toch een bit omvallen, dan blijft de afbeelding leesbaar.

De PBM-familie

PBM staat niet alleen. Eind 1988 breidde Poskanzer de familie uit met PGM (Portable Gray Map, grijstinten, Magic Number P2/P5) en PPM (Portable Pixel Map, RGB-kleur, P3/P6). Samen vormen ze PNM: Portable Any Map. Later kwam er nog PAM (P7) erbij als universele uitbreiding.

PBM is de basis en ook de "meest radicale" vertegenwoordiger van de familie en biedt slechts twee mogelijkheden: licht aan of licht uit – pixel aanwezig of niet. Geen kleur, geen transparantie, geen grijstinten. Alleen een zwart-witbeeld dat direct in de broncode leesbaar is.

Pbmplus en Netpbm

Poskanzer onderhield Pbmplus tot aan de laatste release eind 1991. Daarna werd het project niet meer onderhouden. In 1993 ontstond Netpbm als community-fork, in feite een herverpakking van Pbmplus met bugfixes en uitbreidingen van ontwikkelaars wereldwijd. Sinds 1999 wordt Netpbm onderhouden door Bryan Henderson en is het tegenwoordig in vrijwel elke Linux-distributie opgenomen.

PBM als zodanig is achterhaald. Mailservers kunnen probleemloos overweg met JPG's, PNG's en zelfs video's. De "kleurrijke" variant ppm wordt echter dagelijks gebruikt, in pipes, op Linux-systemen. Voor PBM blijft het educatieve aspect over: het laat zich prachtig uitleggen, prachtig begrijpen en – zo eenvoudig is PBM – op ruitjespapier uitleggen.

Bronnen

Netpbm PBM-formaatspecificatie
Netpbm Geschiedenis – zeer lezenswaardig artikel over de geschiedenis van pbm
Wiki: Jef Poskanzer

0.0/5(0 stemmen)

Laatst bijgewerkt op 6. april 2026 door Sören met meer dan 128.191.172 geconverteerde bestanden sinds 2013.

Converteren, openen en bewerken van PBM bestanden

Details over PBM bestanden

Software voor het openen van PBM bestanden
Software voor het bewerken van PBM bestanden
MIME-type voor PBM

Geen reacties

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *


Bestanden hier neerzetten...