Kaikista PBM tiedostoista
PBM on luultavasti maailman yksinkertaisin kuvamuoto. Se koostuu pelkästään numeroista 0 ja 1, ja jokainen numero vastaa yhtä pikseliä. Tekstin rivi ja sarake määrittävät sijainnin kuvassa. Näin kuvia voi luoda jopa tekstieditorilla. Se on melkein sama kuin piirtäisi lyijykynällä ruutupaperille. PBM ei tue pakkausta, alfa-kanavia eikä värejä. Ei edes harmaasävyjä. Se voi vain piirtää pikselin (1) tai jättää sen piirtämättä (0).
TLDR:
PBM-tiedostot ovat osa suurempaa tiedostomuotojen perhettä. Tätä muotoa ja sen sisarformaatteja käytetään edelleen, mutta ne eivät sovellu erityisen hyvin jakamiseen tai pitkäaikaiseen arkistointiin. Ne ovat suuria, ja vain harvat ohjelmistot tukevat niitä, mutta ne ovat erittäin joustavia ja suorituskykyisiä. Jos löydät PBM-tiedoston, kyseessä on todennäköisesti välituote tai opetustarkoituksiin luotu kuva. PBM-muoto sopii nimittäin erittäin hyvin havainnollistamiseen, sillä se on käytännössä itsestään selvä.
PBM-tiedostojen historia
PBM:n keksi 1980-luvulla Jef Poskanzer, berkeleyläinen ohjelmoija, joka halusi ratkaista yksinkertaisen ongelman: kuvien lähettämisen sähköpostitse. 1980-luvulla sähköposti ei ollut vielä niin kehittynyt kuin nykyään. Vain ASCII-merkkejä voitiin lähettää luotettavasti, binääritiedostot, kuten kuvat, menivät usein rikki matkalla. Poskanzer suunnitteli siis PBM:n, kuvamuodon, joka ratkaisi juuri tämän ongelman.
Tekninen rakenne
PBM-kuva koostuu Plain-versiossaan (P1) tarkalleen kolmesta osasta: magic numberista, mitoista ja varsinaisista pikselitiedoista. Valinnaisesti voidaan käyttää kommentteja, esimerkiksi sisällön kuvaamiseen.
| Osa | Esimerkki | Merkitys |
|---|---|---|
| Magic Number | P1 |
Plain PBM (ASCII-versio) |
| Kommentti | # mein bild |
Valinnainen, aloitetaan # aloitetaan |
| Leveys Korkeus | 24 7 |
Mitat pikseleinä |
| Rasteritiedot | 0 1 1 0 ... |
1 = musta, 0 = valkoinen |
Seuraava esimerkki näyttää täydellisen kuvan dokumentaatiosta:
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:t on esitetty hieman tummempina vain paremman visualisoinnin vuoksi)
Nollien ja ykkösten välistä erottuu selvästi teksti FEEP. PBM vastaa siis binääristä ASCII-merkistöä ;).
Plain vs. Raw: P1 ja P4
Poskanzer otti myöhemmin käyttöön binäärisen version ja teki siitä Netpbm-työkalujen oletusmuodon. Plain-versio (P1) tuli historiallisesti ensin, mutta se korvattiin, koska se vaati paljon enemmän tilaa ("lavishly wasteful" – "äärimmäisen tuhlaava").
| Ominaisuus | Plain PBM (P1) |
Raw PBM (P4) |
|---|---|---|
| Pikselitiedot | ASCII-merkit 0 ja 1 |
bittejä, 8 per tavu pakattuna |
| Ihmisen luettavissa | Kyllä, kokonaan | Vain otsikko |
| Tallennustilaa per pikseli | ~2 tavua (merkki + välilyönti) | 1/8 tavua (1 bitti) |
| Maks. rivin pituus | Suositellaan 70 merkkiä | Ei rajoitusta |
| Kuvia tiedostoa kohti | Täsmälleen 1 | Useita mahdollisia (heinäkuusta 2000 lähtien) |
Nykyään koko PBM-perhettä, erityisesti PPM:ää, käytetään usein välimuodossa. Yksinkertaisimmassa ja lyhimmässä käyttötapauksessa se elää vain kahden ohjelman välisessä putkessa, eli vain itse suoritusajan ajan. Tämä tuo meidät myös formaatin vahvuuksiin:
PBM-tiedostojen vahvuudet
- Ei riippuvuuksia: ei dekooderia, ei kirjastoa. Muutama rivi C-, Python- tai Shell-koodia riittää lukemiseen ja kirjoittamiseen.
- Unix-filosofia: PBM-työkalut ovat suodattimia. Ne yhdistetään toisiinsa putkilla:
cat bild.pbm | pbmtopgm | ppmtojpeg > out.JPG. Yli 330 ohjelmaa Netpbm-paketissa toimii tällä tavalla. - Pedagogiikka: Jos haluaa ymmärtää kuvankäsittelyä (ei kuvankorjausta), on ihanteellista aloittaa PBM:llä.
- Vankka: Ei rikkoutuneita otsikoita, ei vioittuneita palasia. Sisältö on niin vähäistä, että tuskin mikään voi mennä pieleen. Ja jos jokin bitti menee pieleen, kuva pysyy luettavissa.
PBM-perhe
PBM ei ole ainoa. Vuoden 1988 lopussa Poskanzer laajensi perhettä PGM:llä (Portable Gray Map, harmaasävyt, Magic Number P2/P5) ja PPM:n (Portable Pixel Map, RGB-värit, P3/P6). Yhdessä ne muodostavat PNM:n: Portable Any Map. Myöhemmin tuli vielä PAM (P7) yleisenä laajennuksena.
PBM on perheen perusta ja myös sen "radikaalein" edustaja, ja se tarjoaa vain kaksi vaihtoehtoa: valo päällä tai valo pois – pikseli olemassa tai ei. Ei väriä, ei läpinäkyvyyttä, ei harmaasävyjä. Vain suoraan lähdekoodista luettavissa oleva mustavalkoinen kuva.
Pbmplus ja Netpbm
Poskanzer ylläpiti Pbmplus-ohjelmaa sen viimeiseen julkaisuun asti vuoden 1991 lopussa. Sen jälkeen projektia ei enää ylläpidetty. Vuonna 1993 syntyi Netpbm yhteisön haaraksi, joka oli pohjimmiltaan Pbmplus-ohjelman uudelleenpakkaus, johon oli lisätty bugikorjauksia ja laajennuksia kehittäjiltä ympäri maailmaa. Vuodesta 1999 lähtien Netpbm:ää on ylläpitänyt Bryan Henderson, ja se sisältyy nykyään käytännössä jokaiseen Linux-jakeluun.
PBM sinänsä on jäänyt ajasta jälkeen. Sähköpostipalvelimet pystyvät käsittelemään ongelmitta JPG-, PNG– ja jopa videotiedostoja. Sen "värikästä" versiota ppm:ää käytetään kuitenkin päivittäin, putkistoissa ja Linux-järjestelmissä. PBM:lle jää opettavainen rooli: se on helppo selittää, helppo ymmärtää ja – niin yksinkertainen PBM on – selittää ruutupaperille.
Lähteet
Netpbm PBM-formaattispesifikaatio
Netpbm Historia – erittäin lukemisen arvoinen artikkeli pbm:n historiasta
Wiki: Jef Poskanzer
Muunna, avaa ja muokkaa PBM tiedostoja
Tietoja PBM-tiedostoista
- Ohjelmisto PBM-tiedostojen avaamiseen
- Ohjelmisto PBM-tiedostojen muokkaamiseen
- MIME-tyyppi PBM: lle
Ei kommentteja