Informática Numaboa - Referências
Formato BMP
Qua 30 Mar 2005 05:41 |
- Detalhes
- Categoria: Formatos padrão
- Atualização: Terça, 14 Abril 2009 13:12
- Autor: vovó Vicki
- Acessos: 15511
O formato bitmap ou BMP é um dos mais antigos, criado para o Windows pela Microsoft e para o OS/2 pela IBM. Como estes sistemas dependem essencialmente da plataforma de hardware, este formato foi ajustado para atender processadores Intel. Isto significa que os dados armazenados num arquivo BMP estão em formato Little Endian, ou seja, os bytes estão na mesma ordem em que o processador armazena valores.
Bitmap significa mapa de bits e a forma como os dados das imagens BMP são armazenados é bit a bit. Os dados de cada linha da imagem precisam estar ajustados em 32 ou múltiplos de 32 bits (dword). Caso o número de bits não preencha esta condição, os bits faltantes são preenchidos com zeros. Uma outra característica dos BMP é que os dados são armazenados de trás para frente, ou seja, os bits da primeira linha da imagem encontram-se no fim da área de dados e os bits da última linha da imagem se encontram no início da área de dados.
O formato BMP possui quatro versões, duas da MS (antiga e nova) e duas da IBM. As quatro serão descritas neste artigo.
CONTEÚDO BMP
A tabela a seguir contém uma descrição do conteúdo de arquivos BMP. Ela mostra todos os campos, seus deslocamentos (offset) no arquivo, seus tamanhos e seus conteúdos.
Offset | Campo | Tamanho | Conteúdo |
0000h | Identificador | 2 bytes | Os caracteres que identificam o BMP. O conteúdo pode ser um dos seguintes: 'BM' - Windows 3.1x, 95, NT, ... 'BA' - OS/2 Bitmap Array (matriz bitmap) 'CI' - OS/2 Color Icon (ícone colorido) 'CP' - OS/2 Color Pointer (ponteiro colorido) 'IC' - OS/2 Ícone 'PT' - OS/2 Ponteiro |
0002h | Tamanho do arquivo | 1 dword (4 bytes) | O tamanho total do arquivo |
0006h | Reservado | 1 dword (4 bytes) | Reservado para uso futuro |
000Ah | Offset dos dados do bitmap | 1 dword (4 bytes) | Distância do início do arquivo até o início da área de dados |
000Eh | Tamanho do cabeçalho | 1 dword (4 bytes) | Comprimento do cabeçalho de informações usado para descrever as cores e a compressão. Os seguintes tamanhos são possíveis: 28h - Windows 3.1x, 95, NT, ... 0Ch - OS/2 1.x F0h - OS/2 2.x |
0012h | Largura | 1 dword (4 bytes) | Largura (horizontal) do bitmap em pixels |
0016h | Altura | 1 dwrod (4 bytes) | Altura (vertical) do bitmap em pixels |
001Ah | Planos | 1 dword (4 bytes) | Número de planos do bitmap |
001Ch | Bits por pixel | 1 dword (4 bytes) | Bits por pixel usados para armazenar as informações da paleta. Também identifica, de forma indireta, o número de cores possíveis. Os valores podem ser: 1 - Bitmap monocromático (preto e branco) 4 - Bitmap de 16 cores 8 - Bitmap de 256 cores 16 - Bitmap de 16bits (high color) 24 - Bitmap de 24bits (true color) 32 - Bitmap de 32bits (true color) |
001Eh | Compressão | 1 dword (4 bytes) | Especificações da compressão. Os valores possíveis são: 0 - nenhuma (Também identificada por BI_RGB) 1 - RLE 8 bits/pixel (Também identificada por BI_RLE4) 2 - RLE 4 bits/pixel (Também identificada por BI_RLE8) 3 - Bitfields (Também identificada por BI_BITFIELDS) |
0022h | Tamanho da área de dados | 1 dword (4 bytes) | Tamanho da área de dados do bitmap. Este número precisa ser arredondado para o próximo limite de 4 bytes. |
0026h | Resolução H | 1 dword (4 bytes) | A resolução horizontal expressa em pixels por metro |
002Ah | Resolução V | 1 dword (4 bytes) | A resolução vertical expressa em pixels por metro |
002Eh | Cores | 1 dword (4 bytes) | Número de cores usadas neste bitmap. Para um bitmap de 8 bits/pixel, este valor será 100h ou 256 |
0032h | Cores importantes | 1 dword (4 bytes) | Número de cores importantes. Este número será igual ao número de cores se todas as cores forem importantes |
0036h | Paleta | n * 4 bytes | As especificações da paleta. Para cada entrada na paleta, quatro bytes são usados para descrever os valores RGB da cor da seguinte forma: 1 byte para o componente azul 1 byte para o componente verde 1 byte para o componente vermelho 1 byte preenchedor cujo valor é 0 (zero) |
0436h | Área de dados | x bytes | Dependendo das especificações de compressão, este campo contém todos os bytes de dados do bitmap que representam índices na paleta de cores. |
OBSERVAÇÃO: Os bitmaps de 24 bits possuem no máximo 2^24 cores e o campo Paleta não possui entradas. Na área de dados, um conjunto de 3 bytes representa as intensidades relativas de azul, verde e vermelho de cada um dos pixels da imagem.