Mapa de bits de Windows

De la Viquipèdia, l'enciclopèdia lliure.
Saltar a la navegació Saltar a la cerca
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):
Capçalera de mapa de bits
(BITMAPINFOHEADER)

possiblement: model de color

possiblement: Paleta
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:
versió 3
40 (hexadecimal 28))
versió 4
108 (hexàgon 6C)
versió 5
124 (hexadecimal 7C)
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 :
quan el valor és positiu
la imatge és de (els de baix a dalt de píxels de mapa s'inicia a partir de la fila inferior de píxels i acaba amb la part superior un). Aquesta és la variant més comuna.
quan el valor és negatiu
la imatge és de dalt a baix (els píxels de mapa s'inicia a partir de la fila superior de píxels i acaba amb la de baix).
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:
0 (BI_RGB)
El píxel mapa no està comprimit.
1 (BI_RLE8)
El píxel mapa es comprimeix amb el RLE algoritme per a 8 bits de per píxel. Vàlid només per a biBitCount = 8 i biHeight> 0.
2 (BI_RLE4)
El píxel mapa es comprimeix amb el RLE algoritme per a 4 bits de per píxel. Vàlid només per a biBitCount = 4 i biHeight> 0.
3 (BI_BITFIELDS)
El píxel mapa no es comprimeix i es codifica d'acord amb màscares de colors personalitzats. Vàlid només per a biBitCount = 16 o 32; poc freqüent.

A la versió 5 del format, també es permeten els valors següents:

4 (BI_JPEG)
El mapa de bits encapsula una imatge en JPEG format.
5 (BI_PNG)
El mapa de bits encapsula en una imatge PNG format.
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
quan biBitCount = 1
0
quan biBitCount = 4 o 8
nombre de coincidències realment utilitzades a la paleta de colors; 0 indica el nombre màxim (16 o 256).
d'una altra manera
nombre de coincidències a la paleta de colors (0 = sense paleta). Per profunditats majors de 8 bits de per píxel, la paleta no és normalment necessari, però quan hi ha que pot ser utilitzat pel sistema o per alguns programes per optimitzar la representació de la imatge.
36 Dword biClrImportant
quan biBitCount = 1, 4 o 8
nombre de colors utilitzats a la imatge; 0 indica tots els colors de la paleta.
d'una altra manera
si la paleta existeix i conté tots els colors utilitzats a la imatge
nombre de colors
d'una altra manera
0

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
Somriure somrient happy.png
BMP sense comprimir
24030
comprimit BMP
8764
GIF
5365
PNG
4029

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

Enllaços externs

Informatica Portale Informatica : accedi alle voci di Wikipedia che trattano di informatica