Partilhar via


Tipos de cabeçalho de bitmap

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

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

A estrutura BITMAPV5HEADER é uma estrutura de BITMAPV4HEADER estendida, que é uma estrutura dedeestendida BITMAPINFOHEADER. No entanto, o BITMAPINFOHEADER e BITMAPCOREHEADER têm apenas o membro Tamanho 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 completude e compatibilidade com versões anteriores.

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

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

de dados de perfil refere-se ao nome do arquivo de perfil (perfil vinculado) ou aos bits de perfil reais (perfil incorporado). 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 recebe um DIB compactado, os dados de perfil vêm depois dos bits de bitmap, como no formato de arquivo.

Os dados de perfil só existirão para estruturas BITMAPV5HEADER onde bV5CSType é PROFILE_LINKED ou PROFILE_EMBEDDED. Para funções que recebem DIBs compactados, os dados de perfil vêm depois dos dados de bitmap.

Um dispositivo paletizado é qualquer dispositivo que usa paletas para atribuir cores. O exemplo clássico de um dispositivo paletizado é um monitor executado em profundidade de cor de 8 bits (ou seja, 256 cores). A exibição neste 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 paletizado 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 neste caso. No entanto, bitmaps de 16, 24 e 32 bpp podem conter tabelas de cores ideais para exibição em dispositivos paletizados; Neste caso, o aplicativo só precisa criar uma paleta com base na tabela de cores presente no arquivo bitmap.

Os bitmaps de 1, 4 ou 8 bpp devem ter uma tabela de cores com um tamanho máximo baseado no bpp. O tamanho máximo para bitmaps de 1, 4 e 8 bpp é 2 para a potência do bpp. Assim, 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.

Os bitmaps de 16, 24 ou 32 bpp não exigem tabelas de cores, mas podem tê-las para especificar cores para dispositivos paletizados. 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 há tabela de cores.

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

Membro Significado
RedMask Máscara de cor que especifica o componente vermelho de cada pixel, válida somente se o membro do de Compactação estiver definido como BI_BITFIELDS.
GreenMask Máscara de cor que especifica o componente verde de cada pixel, válida somente se o membro Compactação estiver definido como BI_BITFIELDS.
BlueMask Máscara de cor que especifica o componente azul de cada pixel, válida somente se o membro do de Compactação estiver definido como BI_BITFIELDS.

 

Quando o biCompression membro 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 oferecem 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 0th pixel da linha de verificação 0th dos dados de bitmap de um bitmap de 10 pixels por 10 pixels será o 0th pixel da linha de varredura 9th da imagem exibida ou impressa. Os bitmaps de formato RLE (Run-length encoded) e bitmaps de BITMAPCOREHEADER não podem ser bitmaps de cima para baixo. As linhas de verificação DWORD alinhadas, exceto para bitmaps compactados por RLE. Eles devem ser acolchoados para larguras de linha de varredura, em bytes, que não são uniformemente divisíveis por quatro, exceto para bitmaps compactados RLE. Por exemplo, um bitmap de 24 bpp de 10 por 10 pixels terá dois bytes de preenchimento no final de cada linha de verificação.