Tipos de cabeçalho Bitmap

O bitmap tem quatro tipos de cabeçalho básicos:

Os quatro tipos de cabeçalhos de bitmap são diferenciados pelo membro Size , que é o primeiro DWORD em cada uma das estruturas.

A estrutura BITMAPV5HEADER é uma estrutura BITMAPV4HEADER estendida, que é uma estrutura BITMAPINFOHEADER estendida. No entanto, BITMAPINFOHEADER e BITMAPCOREHEADER têm apenas o membro Size em comum com outras estruturas de cabeçalho de bitmap.

Os formatos BITMAPCOREHEADER e BITMAPV4HEADER foram substituídos pelos formatos BITMAPINFOHEADER e BITMAPV5HEADER , respectivamente. Os formatos BITMAPCOREHEADER e BITMAPV4HEADER são apresentados para integridade e compatibilidade com versões anteriores.

O formato de um DIB é o seguinte (para obter mais informações, consulte Armazenamento de Bitmap ):

Uma tabela de cores descreve como os valores de pixel correspondem aos valores de cor RGB. RGB é um modelo para descrever cores produzidas pela emissão de luz.

Os dados de perfil referem-se ao nome do arquivo de perfil (perfil vinculado) ou aos bits de perfil reais (perfil inserido). O formato de arquivo coloca os dados do perfil no final do arquivo. Os dados do perfil são colocados logo após a tabela de cores (se presente). No entanto, se a função receber um DIB empacotado, os dados de perfil virão após os bits de bitmap, como no formato de arquivo.

Os dados de perfil só existirão para estruturas BITMAPV5HEADERem que bV5CSType é PROFILE_LINKED ou PROFILE_EMBEDDED. Para funções que recebem DIBs empacotados, os dados de perfil vêm após os dados de bitmap.

Um dispositivo palettizado é qualquer dispositivo que usa paletas para atribuir cores. O exemplo clássico de um dispositivo palettizado é uma tela em execução em profundidade de cor de 8 bits (ou seja, 256 cores). A exibição nesse modo usa uma pequena tabela de cores para atribuir cores a um bitmap. As cores em um bitmap são atribuídas à cor mais próxima na paleta que o dispositivo está usando. O dispositivo palettizado não cria uma paleta ideal para exibir o bitmap; ele simplesmente usa o que está na paleta atual. Os aplicativos são responsáveis por criar uma paleta e selecioná-la no sistema. Em geral, bitmaps de 16, 24 e 32 bits por pixel (bpp) não contêm tabelas de cores (também conhecidas como paletas ideais para o bitmap); o aplicativo é responsável por gerar uma paleta ideal nesse caso. No entanto, bitmaps de 16, 24 e 32 bpp podem conter essas tabelas de cores ideais para exibição em dispositivos palettizados; nesse caso, o aplicativo só precisa criar uma paleta com base na tabela de cores presente no arquivo bitmap.

Bitmaps que são 1, 4 ou 8 bpp devem ter uma tabela de cores com um tamanho máximo com base no bpp. O tamanho máximo para 1, 4 e 8 bitmaps bpp é 2 até a potência do bpp. Portanto, um bitmap de 1 bpp tem um máximo de duas cores, o bitmap de 4 bpp tem um máximo de 16 cores e o bitmap de 8 bpp tem um máximo de 256 cores.

Bitmaps de 16, 24 ou 32 bpp não exigem tabelas de cores, mas podem ter que especificar cores para dispositivos palettizados. Se uma tabela de cores estiver presente para bitmap de 16, 24 ou 32 bpp, o membro biClrUsed especificará o tamanho da tabela de cores e a tabela de cores deverá ter tantas cores nela. Se biClrUsed for zero, não haverá nenhuma tabela de cores.

As máscaras de bitfield vermelho, verde e azul para bitmaps BI_BITFIELD imediatamente seguem as estruturas BITMAPINFOHEADER, BITMAPV4HEADER e BITMAPV5HEADER . As estruturas BITMAPV4HEADER e BITMAPV5HEADER contêm membros adicionais para máscaras vermelhas, verdes e azuis da seguinte maneira.

Membro Significado
RedMask Máscara de cores que especifica o componente vermelho de cada pixel, válido somente se o membro Compactação estiver definido como BI_BITFIELDS.
Máscara Verde Máscara de cores que especifica o componente verde de cada pixel, válido somente se o membro compactação estiver definido como BI_BITFIELDS.
BlueMask Máscara de cores que especifica o componente azul de cada pixel, válido somente se o membro Compactação estiver definido como BI_BITFIELDS.

 

Quando o membro biCompression de BITMAPINFOHEADER é definido como BI_BITFIELDS e a função recebe um argumento do tipo LPBITMAPINFO, as máscaras de cores seguirão imediatamente o cabeçalho. A tabela de cores, se presente, seguirá as máscaras de cores. Bitmaps BITMAPCOREHEADER não dão suporte a máscaras de cores.

Por padrão, os dados de bitmap são de baixo para cima em seu formato. De baixo para cima significa que a primeira linha de verificação nos dados de bitmap é a última linha de verificação a ser exibida. Por exemplo, o 0pixel da linha de verificação dos dados de bitmap de um bitmap de 10 pixels por 10 pixels será o 0pixel da linha de verificação da imagem exibida ou impressa. Bitmaps de formato RLE (codificado em comprimento de execução) e bitmaps BITMAPCOREHEADER não podem ser bitmaps de cima para baixo. As linhas de verificação são alinhadas ao DWORD , exceto por bitmaps compactados por RLE. Eles devem ser preenchidos para larguras de linha de verificação, em bytes, que não são uniformemente divisível por quatro, exceto por bitmaps compactados RLE. Por exemplo, um bitmap de 10 por 10 pixels de 24 bpp terá dois bytes de preenchimento no final de cada linha de verificação.