Mapa de bits de Windows
Mapa de bits de Windows (BMP) / Mapa de bits independent del dispositiu (DIB) | |
---|---|
Desenvolupat per | Microsoft |
Llicència | Lliure de patents |
Paio | imatges de mapa de bits sense compressió / RLE |
Compressió | Sense comprimir |
Lloc web | www.microsoft.com |
Finestres de mapa de bits és un format de dades utilitzat per a la representació d' imatges de mapa de bits en Microsoft de Windows sistemes operatius . Més conegut com un format d'arxiu , que es va introduir amb Windows 3.0 en 1990 .
Els mapes de bits, com a imatge arxius d'aquest tipus es diu comunament, generalment tenen la extensió .bmp, o amb menys freqüència .dib (mapa de bits independent de el dispositiu).
Característiques
S'han desenvolupat tres versions del format de mapa de bits. La primera i més utilitzada és la versió 3: no hi ha versions anteriors. Les versions posteriors 4 i 5 es troben bastant rarament.
Versió 3
El mapa de bits de Windows format d'arxiu en la versió 3 permet molt ràpid i les operacions de lectura i escriptura sense pèrdues, però en general requereix més memòria que altres formats similars.
Imatges de mapa de bits poden tenir una profunditat d'1, 4, 8, 16, 24, o 32 bits de per píxel . Els mapes de bits amb 1, 4 i 8 bits contenen una paleta per a la conversió de la (2, 16 i 256 respectivament) possibles índexs numèrics en els colors respectius. En les imatges amb profunditats majors, el color no està indexat però codificat directament en els seus RGB components cromàtics; amb 16 o 32 bits per píxel, alguns bits poden romandre sense utilitzar.
La versió 3 de el format no és compatible amb canal alfa , correcció de color, o metadades .
Versions 4 i 5
Amb Windows 95 i Windows 98 Microsoft va introduir noves versions 4 i 5 de el format de mapa de bits, que donen suport al canal alfa i la definició del costum espais de color . La versió 5 també proporciona la capacitat d'utilitzar un perfil de color a una d'externa d'arxius i embed JPEG i PNG . No obstant això, aquests nous formats són molt poques vegades es troben com arxius independents i moltes aplicacions no són capaços de reconèixer-los; el seu ús principal és com un format intern per als de Windows o de videojocs programes [1] .
Estructura
Capçalera de fitxer (BITMAPFILEHEADER) |
Bloc d'informació (BITMAPINFO):
|
possiblement: espai no utilitzat |
mapa de píxels |
possiblement: espai no utilitzat |
Estructura d’un mapa de bits
En el disc, imatges de mapa de bits es codifiquen amb alguns simples estructures que descriuen les seves propietats. Tots els valors estan en Little Endian fi.
- BITMAPFILEHEADER
- Aquest és l'encapçalament de mapa de bits que conté informació sobre el byte de mida de l' arxiu i el desplaçament des del principi de l'arxiu del primer byte al píxel mapa. Aquesta estructura està absent quan el mapa de bits s'integra com un recurs dins d'una aplicació o biblioteca .
- BITMAPINFOHEADER
- Aquí es mostren les dimensions dels píxels de la imatge i el nombre de colors utilitzats. La informació es refereix al dispositiu en què es va crear el mapa de bits. També en aquesta estructura també s'indiquen l'horitzontal i vertical resolució de el dispositiu de sortida: aquests valors, juntament amb els de l'amplada i alçada en píxels, determinar la mida d'impressió de la imatge en mida real.
- model de color
- Amb les versions 4 i 5 de el format de mapa de bits, el bloc d'informació s'ha ampliat amb estructures que li permeten definir els seus propis models de color . A la pràctica, aquestes estructures són poc freqüents.
- paleta
- Aquesta estructura és una matriu que coincideixi amb un color a cada índex que es pot assignar a un píxel. A la paleta, cada color està representat per una estructura de 4-byte (RGBQUAD), un per a cada un dels vermells , verds i components blaus més un byte no utilitzat. En el cas d'imatges amb 16, 24 o 32 bits per píxel, aquesta taula de colors no és necessària perquè el color dels píxels no està indexat, sinó que es codifica directament en els seus components.
- mapa de píxels
- Aquesta estructura de dades constitueix el cos real del mapa de bits, on cada píxel es combina amb un color en forma d'índex a la paleta o als seus components cromàtics. Si la mida en bytes de les línies horitzontals no és múltiple de 4, s’allargaran amb bytes nuls. En la versió 5 de el format de mapa de bits d'aquesta estructura també pot incrustar JPEG i PNG .
En el cas més comú dels mapes de bits en la versió 3 de el format sense comprimir i sense una paleta addicional per a profunditats majors de 8 bits de per píxel, la mida en bytes requerit per l'arxiu es pot expressar amb la següent matemàtica fórmula , on w i h respectivament indicar l'amplada i l'alçada de la imatge en píxels i b, la profunditat en bits per píxel.
Amb hem indicat la funció esglaonada de Heaviside , el valor és 0 per arguments negatius i 1 per als positius. indica la funció de sostre, equivalent a la més petita nombre enter més gran que o igual a l'argument.
La mateixa expressió es pot formular més simplement en llenguatge C com això:
54 + 4 * (((1 << b) & 0xffff) + h * ((w * b + 31) / 32))
Estructura detallada
BITMAPFILEHEADER (mida: 14 bytes) | |||
---|---|---|---|
compensar | paio | nom | contingut |
0 | Paraula | bfType | el ASCII cadena "BM" (valor decimal 16973, hexadecimal 424D) |
2 | Dword | bfSize | mida de l'arxiu (no fiable) |
6 | Dword | bfReservat | 0 |
10 | Dword | bfOffBits | desplaçament del primer byte de l' píxel mapa des del principi de l'arxiu |
BITMAPINFOHEADER (mida: 40 bytes) | |||
---|---|---|---|
compensar | paio | nom | contingut |
0 | Dword | biSize | mida en bytes del bloc d'informació juntament amb les estructures del model de color afegides a les versions 4 i 5:
|
4 | LLARG | biAmplada | ample de la imatge en píxels |
8 | LLARG | biHeight | Correspon a valor absolut a la alçada de la imatge en píxels :
|
12 | Paraula | biavions | sempre 1 |
14 | Paraula | biBitCount | profunditat de color de la imatge en els bits per píxel , ha de ser un dels següents valors: 1, 4, 8, 16, 24 o 32. En el cas d'1, 4 o 8 bits de per píxel els colors es indexada. Els valors 16 i 32 són poc freqüents. En la versió 5 de el format, el valor 0 es pot utilitzar quan s'encapsula 1 JPEG o imatge PNG . |
16 | Dword | biCompressió | un dels valors següents:
A la versió 5 del format, també es permeten els valors següents: |
20 | Dword | biSizeImage | Indica la mida en bytes de l' píxel memòria intermèdia mapa. Aquest valor es pot deixar en zero quan biCompression s'estableix en BI_RGB. |
24 | LLARG | biXPelsPerMeter | horitzontal resolució de el dispositiu de sortida en píxels per metre ; 0 si no s'especifica la resolució. |
28 | LLARG | biYPelsPerMeter | vertical de resolució de el dispositiu de sortida en píxels per metre ; 0 si no s'especifica la resolució. |
32 | Dword | biClrUsed |
|
36 | Dword | biClrImportant |
|
Amb les versions 4 i 5 del format, Microsoft ha ampliat el bloc d'informació afegint nous camps al final de l'estructura de la versió anterior. La documentació sobre el format d’aquestes noves versions està disponible a la biblioteca MSDN.
BITMAPINFOHEADER | BITMAPV4HEADER | BITMAPV5HEADER | byte |
---|---|---|---|
biSize | bV4Size | bV5Size | 4 |
biAmplada | bV4Width | Amplada bV5 | 4 |
biHeight | bV4Height | bV5Altura | 4 |
biavions | bV4Planes | bV5Avions | 2 |
biBitCount | bV4BitCount | bV5BitCount | 2 |
biCompressió | bV4V4Compressió | bV5Compressió | 4 |
biSizeImage | bV4SizeImage | bV5SizeImage | 4 |
biXPelsPerMeter | bV4XPelsPerMeter | bV5XPelsPerMeter | 4 |
biYPelsPerMeter | bV4YPelsPerMeter | bV5YPelsPerMeter | 4 |
biClrUsed | bV4ClrUsed | bV5ClrUsed | 4 |
biClrImportant | bV4ClrImportant | bV5ClrImportant | 4 |
bV4RedMask | bV5RedMask | 4 | |
bV4GreenMask | bV5GreenMask | 4 | |
bV4BlueMask | bV5BlueMask | 4 | |
bV4AlphaMask | bV5AlphaMask | 4 | |
tipus bV4CST | tipus bV5CST | 4 | |
bV4Endpoints | bV5Punts finals | 36 | |
bV4GammaRed | bV5GammaRed | 4 | |
bV4GammaGreen | bV5GammaGreen | 4 | |
bV4GammaBlue | bV5GammaBlue | 4 | |
bV5Intent | 4 | ||
bV5ProfileData | 4 | ||
bV5ProfileSize | 4 | ||
bV5 Reservat | 4 |
Avantatges i inconvenients
Una de les característiques essencials de el format de mapa de bits que han fet que sigui tan afortunat durant molt de temps és la velocitat amb la qual es llegeixen o escriuen en el disc, que és major en comparació amb la d'altres tipus d'imatges d'arxius , especialment en màquines més lentes. En els mapes de bits sense comprimir, la representació de les dades en la RAM de memòria és en gran mesura similars, sovint idèntica, a la de les dades en el disc: el processador no està obligat a realitzar càlculs laboriosos durant la codificació i operacions de descodificació i el temps d'accés a les dades és sovint limitada només per la unitat de maquinari .
Mida de byte de la mateixa imatge (128 colors) en diferents formats de ràster | |||||||||||||||||
![]() |
|
Hi ha també, però no s'utilitza àmpliament, la capacitat de comprimir els 16 i els 256 mapes de bits de color amb el RLE algoritme . No obstant això, RLE de compressió no és tan eficient com altres de compressió sense pèrdues mètodes. Els mapes de bits, fins i tot formats comprimits, generalment ocupen més espai en disc que altres ràster formats com GIF o PNG , i per tant són menys adequats que aquestes per a la transmissió d'imatges a través d' Internet o per a l'emmagatzematge permanent de CD , DVD o altres suports de dades ..
Una greu limitació del format de mapa de bits, almenys a la versió comuna 3, és que no admet cap tipus de transparència. Per superar aquest problema, diversos trucs s'han desenvolupat, com ara l'ús d'un color especial per als píxels transparents, o l'ús d'altres mapes de bits per emmascarar les parts invisibles d'una imatge (algunes d'aquestes tècniques es poden trobar a la mateixa API de Windows ), però cap ofereixen la mateixa versatilitat de la canal alfa , la difusió està relacionat principalment amb l'adveniment de el format PNG.
Tot i la mida d'arxiu més gran i la falta de suport de la transparència, hi ha diversos factors que han contribuït significativament a la popularitat dels mapes de bits: el format és simple, ben documentada, i no protegits per patents que restringeixen l'ús gratuït. Especialment aquest últim punt ha significat que el format de mapa de bits és ara compatible amb gairebé tots els gràfics aplicacions , incloent molts de codi obert programes fins i tot més enllà de les fronteres de la Microsoft món.
Usos pràctics
Encara que en molts aspectes antiquada i obsoleta, el format d'imatge de mapa de bits té un rècord de Finestres sistemes d'històrics i compatibilitat amb versions anteriors raons. És per aquesta circumstància, unida a la popularitat de Windows per ordinadors personals , que els mapes de bits se segueixen utilitzant i estesa en l'actualitat, tot i que estan disponibles per a gairebé totes les necessitats de les millors alternatives.
Processament d'imatge
Els mapes de bits, ràpids i voluminosos, són especialment adequats per a l’emmagatzematge temporal d’imatges que sovint es modifiquen. Moltes de les finestres d'exploració de programari guarda les imatges de mapa de bits com arxius escanejats per defecte.
Internet
El format de mapa de bits sembla ser inadequada per al Internet per diverses raons:
- Imatges de mapa de bits són més grans en termes de memòria que els seus equivalents en altres formats, de manera que triguen més temps de transmissió.
- En els sistemes operatius diferents de Windows, molts navegadors i clients de correu electrònic no són capaços de mostrar imatges en aquest format.
- El format de mapa de bits, almenys en la versió 3 comú, no és compatible amb qualsevol tipus de transparència, posar límits a les possibilitats de disseny de pàgines web .
Mapa de bits en programació
En Finestres que operen els sistemes , els mapes de bits són, fins i tot abans dels arxius , els objectes utilitzats internament pel GDI interfície gràfica . Diversos llenguatges de programació , per tant per Windows han desenvolupat abstraccions específiques per a aquest tipus de dades.
API de Windows
Les API de Windows a partir de les primeres versions especials funcions que li permeten realitzar les operacions més simples de mapes de bits, com copiar o combinar parts d'una imatge en la memòria. Els mapes de bits són objectes GDI, així com fonts (fonts), raspalls (raspalls) i paletes (paletes); així com altres objectes de Windows, mapes de bits són manipulats a través d'un mànec, que és un valor que identifica l'objecte a la execució medi ambient. Després d'haver estat creat per cridar a les funcions apropiades, els mapes de bits es seleccionen en un context de dispositiu, una entitat abstracta que serveix per comunicar-se amb un dispositiu o dispositiu virtual. D'aquesta manera, la informació pot ser enviada a un monitor d' o impressora . A l'seleccionar un mapa de bits en un context de dispositiu de memòria, també és possible trucar a les funcions GDI apropiats per fer els canvis més comuns a la imatge. Per a més operacions de gràfics complexos, el píxel de mapa es pot accedir directament.
Llenguatges de programació d'alt nivell utilitzen en part per posar en pràctica les funcions API gràfiques de programació tècniques amb mapes de bits.
.NET
El .NET Framework ofereix suport natiu per a diferents tipus d'imatges de mapa de bits, i per descomptat també per als mapes de bits a través de la System.Drawing.Image.Bitmap
classe . El Visual Studio entorn de desenvolupament et deixa posar un mapa de bits en el fons d'un formulari o component simplement seleccionant el seu camí en una llista de propietats. Aquesta tècnica, que es remunta a les primeres encarnacions de Visual Studio , al principi funcionava només amb mapes de bits i després es va estendre a altres tipus d'imatges.
Java
A diferència de .NET Framework que va ser desenvolupat per Microsoft especialment per a Windows, Java té com a objectiu ser un multi-plataforma de sistema, per assegurar que el mateix programa funciona de la mateixa en totes les plataformes de diferents fabricants. Per tant, no és d’estranyar que no hi hagi cap classe específica a Java, tal com hi ha a .NET, per manipular el format de mapa de bits de Windows. No obstant això, hi ha algunes biblioteques i mòduls de programació addicionals que implementen aquestes característiques i es poden trobar al Internet .
C / C ++
Entre els notables C C ++ biblioteques per a la manipulació d'imatges, podem trobar FreeImage , un multiplataforma de codi obert biblioteca, que és compatible amb un gran nombre de formats i funcions.
Delfos
Des de la primera edició de Delphi , l'objecte TBitmap està present en la VCL (Visual Component Library), que li permet manipular arxius de mapa de bits. També hi ha projectes externs a Delphi, que s'expandeixen el potencial i la funcionalitat de l'objecte TBitmap, entre aquests recordem Graphics32 , projecte JEDI i GLScene .
Python
Fins i tot a través del pitó llenguatge és possible manipular imatges: entre les biblioteques disponibles, trobem PIL arxivat el 2 d'abril de 2012 a WebCite . i FreeImagePy , basat en FreeImage
d'importació CoreGraphics *
importar matemàtiques
# Creeu un context de mapa de bits transparent RGB amb un fons negre de 256x256
cs = CGColorSpaceCreateDeviceRGB ()
c = CGBitmapContextCreateWithColor (256, 256, CS, (0, 0, 0, 0))
# Creeu un quadrat groc amb una línia vermella al voltant del seu perímetre
c. saveGState ()
c. setRGBStrokeColor (1, 0, 0, 1) # xarxa
c. setRGBFillColor (1, 1, 0, 1) # groc
c. setLineWidth (3)
c. setLineJoin (kCGLineJoinBevel)
c. addRect (CGRectMake (32.5, 32.5, 191, 191))
c. drawPath (kCGPathFillStroke);
c. restoreGState ()
# Afegiu text girat
c. saveGState ()
c. translateCTM (128, 128)
c. rotateCTM (matemàtiques radiants (-. 30.0))
c. translateCTM (- 128, - 128)
c. setRGBStrokeColor (0, 0, 0, 1)
c. setRGBFillColor (1, 1, 1, 1)
c. selectfont ( "Helvetica", 36, kCGEncodingMacRoman)
c. SETTEXTPOSITION (40, 118)
c. setTextDrawingMode (kCGTextFillStroke)
c. setShadow (CGSizeMake (0, - 10), 2)
c. showText ( "hola, món", 12)
c. restoreGState ()
# Deseu la imatge en format .png
c. WriteToFile ( "out.png", kCGImageFormatPNG)
Nota
Bibliografia
- Formats d'arxiu d'imatge comprimit - John Miano, Addison-Wesley Professional, 1999 - ISBN 0-201-60443-4
Articles relacionats
Altres projectes
-
Wikimedia Commons conté imatges o altres arxius de mapes de bits de Windows
Enllaços externs
- (ES) pàgina de la biblioteca MSDN en mapes de bits , en msdn.microsoft.com.
- (ES) estructura de mapa de bits , en msdn.microsoft.com.
- Veure els mapes de bits amb l'API de Windows , en softzone.it (arxivada des de la direcció URL original, el 6 de maig de 2006).
- (ES) Els exemples d'imatges BMP en diversos formats , en wvnvaxa.wvnet.edu. Consultat el 15 de de gener de 2006 (Arxivat des de l'original, el 25 de juny de 2006).