Bärbar anymap

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 februari 2020; verifiering kräver 1 redigering .
bärbar pixmap
Förlängning .pnm[ett]
MIME -typ image/x-portable-pixmap, -graymap, -bitmap, -anymap är alla inofficiella
Utvecklaren Poscanzer, Jeff
Formattyp Grafiska format
 Mediafiler på Wikimedia Commons

De enkla portabla bildlagringsformaten för pixmap (ibland kallade PNM ): färg (PPM), gråskala (PGM) och svartvitt (PBM) definierar reglerna för utbyte av grafikfiler. Dessa format kan ge en mellanliggande representation av data vid konvertering av bitmappsgrafikfiler av de tre listade typerna mellan olika plattformar. Vissa applikationer stöder dessa tre format direkt genom att definiera dem som PNM -format (portable anymap). PPM -formatet utvecklades av Jeff Poskanzer . 

Beskrivning av filformatet

Låt oss titta på ett exempel på en bitmapp av bokstaven "J":

....X. ....X. ....X. ....X. ....X. ....X. X...X. .XXX.. ...... ......

PBM - formatet representerar detta exempel i följande form:

P1 # Detta är ett exempel på en bitmappsfil j.pbm 6 10 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 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Rad P1 definierar filformatet. Pundtecknet (#) skiljer kommentaren åt. De följande två siffrorna är bredd och höjd. Sedan följer en matris med pixelvärden (i fallet med en monokrom bild, som i det här exemplet, endast nollor och ettor).

Resultatbild: . Här är den, förstorad 20 gånger:

Användning i Netpbm

Netpbm - paketet kan till exempel använda två konverteringsprogram i följd för att omvandla denna kod till en BMP -fil :

pgmtoppm "#FFFFFF" j.pbm > j.ppm ppmtobmp j.ppm > j.bmp

Beroende på det erkända filformatet kan det bärbara pixmap-enkla grafikfilsystemet skilja mellan tre liknande filformat, var och en i två versioner:

I varje fall hänvisar den lägre versionen (P1, P2 eller P3) till mänskligt läsbara, ASCII -baserade format som liknar de som visas i exemplet i den här artikeln. Och de övre versionerna (P4, P5 och P6) är binära format som är mindre parserbara, men mer effektiva för att spara utrymme i filen, och mer parserbara på grund av bristen på mellanslag.

16-bitars tillägg

Till en början stödde de binära formaten PGM och PPM (P5 och P6) ett bitdjup på högst 8 bitar. Naturligtvis gick det att använda ASCII-format, men att använda dem ökar storleken och saktar ner läsningen av filer. Som ett resultat har många utvecklare försökt utöka formatet för att stödja mer bitdjup. När vi använder mer djup står vi inför problemet med ordningen på bytes (Endianness) i filen. Olika tillämpningar är inte konsekventa i någon enskildhet. Netpbm använder de facto big-endian order när man arbetar med PNM . P6 3 3 255 0 0 0 0 0 0 0 0 0 0 0 0 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0

PPM-exempel

P3 # P3 betyder att färgerna är i ASCII, # följt av siffror som anger antalet kolumner och rader (3 kolumner och 2 rader), #255 för max färgvärde, # sedan RGB-tripletter 3 2 255 255 0 0 0 255 0 0 0 255 255 255 0 255 255 255 0 0 0

Bild (förstorad):

P6-formatet för samma bild kommer att lagra varje färgkomponent i en färg i en byte (det vill säga tre byte per pixel). Filen kommer att vara mindre, men färginformationen när du tittar på en sådan fil kommer inte att uppfattas direkt av en person:

P6 #möjlig kommentarrad här 3 2 255 !@#$%^&*()_+|{}:"<

PPM-formatet är okomprimerat, så filerna i det är stora. Till exempel kan en 192x128 PNG-bild vara 552 byte stor. Efter att ha konverterat den till PPM kommer filstorleken att vara 73 848 byte.

PPM-formatet är tillräckligt enkelt för att du ska kunna skriva kod som kan läsa och skriva data i detta format.

Se även

Länkar

  1. FILNAMN // PNM-formatet