Visão geral dos formatos de pixel nativos
Este tópico apresenta os formatos de pixel fornecidos pelo Windows Imaging Component (WIC).
Um formato de pixel descreve o layout de memória de cada pixel em um bitmap. Este layout de memória descreve como os dados de imagem de um bitmap são codificados especificando o formato numérico e a organização do canal de cores. O WIC dá suporte a vários formatos numéricos para vários esquemas de organização de canal de cores, fornecendo uma ampla gama de formatos de pixel.
Profundidade de bits
A intensidade de bits é o número de bits usados para codificar cada canal de cor. Hoje, a maioria das imagens digitais usa uma intensidade de bits de 8, o que significa que cada canal de cores em um pixel é representado por 8 bits, fornecendo 2⁸ (256) valores exclusivos por canal. Uma imagem que tem uma intensidade de bits de 8 e três canais de cor (como vermelho, verde e azul) usa 24 bits por pixel (bpp), o que fornece 2²⁴ (16.777.216) cores diferentes por pixel.
Para uma melhor resolução de cores, é possível usar uma intensidade de bits de 16 ou 32. Isso fornece a cada canal de cores 2¹⁶ (65.536) ou 2³² valores exclusivos, a um custo de mais memória por pixel.
Em alguns formatos, a intensidade de bits não é um múltiplo de 8. Esses formatos são chamados de formatos empacotados, pois os canais de cor em um pixel não estão alinhados aos limites de bytes. Por exemplo, se a intensidade de bits é 5, três canais de cor podem ser armazenados em 16 bits (incluindo 1 bit de preenchimento, para alinhar os pixels aos bytes). Formatos empacotados são úteis quando a memória ou a capacidade de processamento são limitadas.
Codificação numérica
Para a maioria das imagens digitais de hoje, bytes não assinados e inteiros curtos sem sinal são usados para descrever o intervalo numérico de cada canal de cor. O valor mínimo (0) representa intensidade zero em um único canal de cor, e o preto é obtido quando todos os canais de cor são zero. Da mesma forma, o valor máximo representa a intensidade total e o branco é alcançado quando todos os canais de cores estão em intensidade total. Com uma intensidade de bits de 8, um UINT fornece 256 valores exclusivos por canal de cores (0 a 255). Um UINT de 16 bits fornece 65.536 valores exclusivos por canal de cor (0 a 65.535).
Além disso, o WIC dá suporte a formatos de ponto fixo e ponto flutuante. Esses formatos dão suporte a intervalos dinâmicos maiores, pois todo o intervalo numérico de cada canal de cor é maior que o intervalo visível. Como resultado, as cores podem ser ajustadas acima ou abaixo do intervalo visível, durante as etapas intermediárias do processamento de imagens, sem perda de informações de imagem.
Codificação numérica de ponto fixo
Os valores de ponto fixo de 16 bits são interpretados como s2.13: bit de sinal, dois bits inteiros e treze bits fracionários. Usando essa interpretação, um intervalo numérico de -4.0 a +3.999... pode ser representado, com o valor de 1.0 representado pelo valor inteiro com sinal 8192 (0x2000).
Os valores de ponto fixo de 32 bits são interpretados como s7.24: bit de sinal, sete bits inteiros e vinte e quatro bits fracionários. Usando essa interpretação, um intervalo numérico de -128,0 a +127,999... pode ser representado, com o valor de 1.0 representado pelo valor inteiro com sinal 16777216 (0x01000000).
Canais de cor
Os canais de cor de um formato de pixel definem o layout de memória de cada cor dentro dos dados de imagem de um bitmap. Há uma variedade de diferentes estruturas de canal de cor comuns nas imagens digitais de hoje, e o WIC fornece suporte para muitas delas.
Modelo de cores RGB/BGR
Os formatos RGB e BGR descrevem cores em um modelo de cores aditivo. O método mais comum de descrever uma imagem é com três canais de cor separados que representam as cores vermelho (R), verde (G) e azul (B). O WIC fornece suporte para esses três canais na ordem vermelho-verde-azul (RGB) ou azul-verde-vermelho (BGR). Essa é a ordem na qual cada canal de cor aparece dentro do fluxo de bits sequencial. Por exemplo, no formato GUID_WICPixelFormat32bppRGB, cada pixel tem 32 bits de largura. O canal vermelho é o primeiro byte (menos significativo) na memória, seguido de verde e, em seguida, azul. Por outro lado, no formato GUID_WICPixelFormat32bppBGR, os canais de cor estão na ordem oposta. O WIC dá suporte a vários formatos RGB/BGR, incluindo formatos especiais de bits empacotados, como GUID_WICPixelFormat16bppBGR555.
Observação
Os canais de cor dos formatos especiais de bits empacotados no BGR não estão em múltiplos de 8, como os canais de cor em formatos de pixel típicos. Isso significa que os valores de canal não são alinhados por bytes. É necessário ter cuidado ao ler canais de cor de bits empacotados.
Além dos formatos RGB e BGR, o WIC também fornece formatos de pixel RGB e BGR que dão suporte a um canal alfa (A). O canal alfa fornece dados de opacidade para o pixel. Para formatos com um canal alfa adicionado, o canal alfa geralmente é o último na ordem de canal de cor. Por exemplo, no formato de pixel GUID_WICPixelFormat32bppBGRA, a ordem de bytes é azul, verde e vermelho, seguida pelo canal alfa.
O WIC também dá suporte a formatos de pixel alfa RGB pré-multiplicados (P). Em um formato de pixel RGBA típico, os valores de cor vermelho, verde e azul são os valores reais de cor da imagem. Para criar uma imagem composta no formato RGBA padrão, o valor alfa da imagem em primeiro plano deve ser multiplicado por cada um dos canais vermelho, verde e azul antes de adicioná-la à cor da imagem de plano de fundo. Em um formato de pixel RGB alfa pré-multiplicado, cada canal de cor já foi multiplicado pelo valor alfa. Isso fornece um método mais eficiente de composição de imagem com dados de canal alfa. Para recuperar os valores de cor verdadeiros de cada canal em um formato de pixel PRGBA/PBGRA, a multiplicação de canal alfa deve ser revertida dividindo valores de cor pelo valor alfa.
Modelo de cores CMYK
O CMYK é um modelo de cor subtrativo usado em impressão. As cores produzidas por um modelo CMYK são geradas pela luz que não é absorvida, mas refletida. O CMYK é um modelo de quatro canais de ciano (C), magenta (M), amarelo (Y) e preto (K). Quando todos os quatro canais de cor estão no valor máximo, o resultado é preto. Assim como os modelos de cor RGB/BGR, a ordem de bytes dentro do fluxo de bits sequencial é fornecida pelo nome do formato de pixel. Por exemplo, no formato de pixel GUID_WICPixelFormat32bppCMYK, cada pixel é composto por 32 bits. O primeiro byte contém o valor ciano, seguido por magenta, amarelo e preto. O WIC fornece formatos de pixel para CMYK a 32 e 64 bits por pixel (bpp).
Além do modelo de cores CMYK padrão, o WIC também fornece CMYK com alfa. Isso permite que as imagens do CMYK tenham dados de combinação alfa semelhantes ao modelo de cores RGB/BGR. O canal alfa está localizado imediatamente após o preto no fluxo de bits sequencial de um bitmap.
Modelo de cores n-channel
Para flexibilidade, o WIC também fornece formatos de pixel que não têm uma ordem de canal predefinida. O WIC fornece formatos de pixel que dão suporte a entre três a oito canais de dados de imagem contínua em intensidades de bits de 8 e 16. Ao contrário dos formatos de pixel RGB/BGR e CMYK, os formatos n-channel não especificam a ordem do canal, mas sim o número de canais de cor disponíveis. Por exemplo, no formato de pixel GUID_WICPixelFormat32bpp4Channels, cada pixel é composto por 32 bits com cada um dos quatro canais ocupando um único byte.
O WIC também fornece formatos de pixel para n-channel com alfa. Isso permite que as imagens de n-channel tenham dados de combinação alfa semelhantes aos modelos de cores RGB/BGR e CMYK. O canal alfa está localizado imediatamente após o último canal de cor no fluxo de bits sequencial de um bitmap.
Modelos de cores indexados e em escala de cinza
Os formatos indexados usam uma tabela de cores, chamada de paleta. A paleta é armazenada externamente nos dados de pixel ou definida implicitamente. O valor de cada pixel na imagem é um índice na paleta. Com um formato indexado, o número de bits por pixel está diretamente relacionado ao número de entradas na paleta. Isso reduz significativamente a quantidade de dados necessários para representar a imagem, mas também restringe o número de cores disponíveis para a imagem. O WIC dá suporte a formatos indexados com 1, 2, 4 ou 8 bpp.
Para formatos monocromáticos (escala de cinza), o WIC dá suporte a 1, 2, 4, 8, 16 e 32 bits por pixel. Para intensidades de bits de 1, 8, 16 e 32, os dados de cor são armazenados em um único canal. Para intensidades de bits de 2 ou 4, os pixels são índices em uma paleta de escala de cinza.
Modelo de cores Y'CbCr
O WIC adiciona suporte para o modelo de cores JFIF Y'CbCr JPEG. O Y'CbCr separa cores em um componente luma (Y') e dois componentes croma (Cb e Cr). Muitos arquivos JPEG armazenam dados de imagem nativamente usando o modelo de cores Y'CbCr.
O sistema visual humano é menos sensível às alterações no croma do que no luma, e os formatos Y'CbCr podem aproveitar essa sensibilidade reduzida reduzindo a quantidade de dados de croma armazenados em relação ao luma. Eles fazem isso armazenando croma e luma em planos separados e dimensionando cada plano de componente para uma resolução diferente. Essa prática é conhecida como subamostragem de croma.
Como os dados de croma e luma são armazenados separadamente e podem ter resoluções diferentes, o WIC define formatos de pixel luma e croma separados. O WIC dá suporte a dados de 8 bits por canal.
Formato de pixel do WIC
Os formatos de pixel no WIC são definidos usando GUIDs para evitar conflitos com IHVs. O WIC fornece um nome amigável para fazer referência ao GUID de um formato de pixel nativo. A convenção de nomenclatura para os formatos de pixel do WIC é a seguinte:
[GUID_WICPixelFormat][Bits por pixel][Ordem do canal][Tipo de armazenamento]
Componente de formato | Descrição |
---|---|
GUID_WICPixelFormat | A identificação descritiva para todos os formatos de pixel do WIC. O nome amigável para todos os pixels do WIC começa com esta cadeia de caracteres. |
Bits por pixel | O número de bits por pixel (bpp) usado para o formato de pixel. |
Ordem do canal | O modelo de canal de cor e a ordem de cada canal para o formato. |
Tipo de armazenamento | A codificação numérica usada para o formato de pixel. A codificação padrão é um inteiro sem sinal. Se nada seguir as informações do modelo de cor, um inteiro sem sinal (UINT) estará implícito. FixedPoint e Float são usados para identificar formatos de pixel que usam codificação de ponto fixo e ponto flutuante, respectivamente. |
Observação
Para formatos n-channel, a [Ordem do canal] não especifica a ordem de cores, mas sim o número de canais disponíveis. Por exemplo, GUID_WICPixelFormat24bpp3Channels fornece três canais de cor em que "3Channels" é a entrada [Ordem do Canal], mas indica apenas o número de canais e não a ordem.
Por exemplo, o nome amigável GUID_WICPixelFormat24bppRGB significa que o formato de pixel usa 24 bits por pixel e o modelo de cores RGB. Como o nome não identifica explicitamente um tipo de armazenamento, um inteiro sem sinal está implícito.
O WIC dá suporte a vários formatos de pixel. As tabelas a seguir agrupam formatos de pixel semelhantes por estrutura de cores, fornecendo informações adicionais, como intensidade de bits, bits por pixel e codificação numérica. Cada tabela contém as seguintes informações:
- Nome amigável. O nome amigável do formato de pixel.
- Contagem de canais. O número de canais de cor.
- Bits por canal. O número de bits por canal (intensidade de bits).
- Bits por pixel. O número de bits por pixel, incluindo os bits de preenchimento.
- Tipo de armazenamento. A codificação numérica dos dados da imagem. Esse valor pode ser um inteiro sem sinal (UINT), um número de ponto fixo (FixedPoint) ou um número de ponto flutuante (Float).
Observação
Para maior clareza, este documento refere-se a formatos de pixel apenas por seus nomes amigáveis. O valor hexadecimal real para os formatos de pixel pode ser encontrado nos arquivos wincodec.h/idl.
Formatos de pixel indefinidos
A lista a seguir mostra formatos de pixel genéricos que são usados quando o formato de pixel é indefinido ou não é importante para uma operação de imagem.
- GUID_WICPixelFormatUndefined
- GUID_WICPixelFormatDontCare
Formatos de pixel indexados
A tabela a seguir lista os formatos de pixel indexados fornecidos pelo WIC. Nesses formatos, o valor de cada pixel é um índice em uma paleta de cores.
Nome Amigável | Contagem de canais | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|
GUID_WICPixelFormat1bppIndexed | 1 | 1 | UINT |
GUID_WICPixelFormat2bppIndexed | 1 | 2 | UINT |
GUID_WICPixelFormat4bppIndexed | 1 | 4 | UINT |
GUID_WICPixelFormat8bppIndexed | 1 | 8 | UINT |
Formatos de pixel de bits empacotados
A tabela a seguir lista os formatos de bits empacotados fornecidos pelo WIC. Nesses formatos, os dados do canal de cor não são alinhados por bytes.
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormat16bppBGR555 | 3 | 5 | 16 | UINT |
GUID_WICPixelFormat16bppBGR565 | 3 | 5(B)/6(G)/5(R) | 16 | UINT |
GUID_WICPixelFormat16bppBGRA555 | 4 | 5(B)/5(G)/5(R)/1(A) | 16 | UINT |
GUID_WICPixelFormat32bppBGR101010 | 3 | 10 | 32 | UINT |
GUID_WICPixelFormat32bppRGBA1010102 | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
GUID_WICPixelFormat32bppRGBA1010102XR | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
GUID_WICPixelFormat32bppR10G10B10A2 | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
GUID_WICPixelFormat32bppR10G10B10A2HDR10 | 4 | 10(R)/10(G)/10(B)/2(A) | 32 | UINT |
Para os formatos GUID_WICPixelFormat32bppBGR101010 e GUID_WICPixelFormat32bppRGBA1010102, o canal vermelho é armazenado nos bits menos significativos. Para os formatos GUID_WICPixelFormat32bppR10G10B10A2 e GUID_WICPixelFormat32bppR10G10B10A2HDR10, o canal vermelho é definido nos bits mais significativos, com o mesmo layout que DXGI_FORMAT_R10G10B10A2_UNORM.
O formato GUID_WICPixelFormat32bppR10G10B10A2HDR10 é o formato de pixel de 10 bits para HDR10 (espaço em cores BT.2020 e EOTF SMPTE ST.2084).
Formatos de pixel de escala de cinza
A tabela a seguir lista os formatos de escala de cinza fornecidos pelo WIC. Nesses formatos, os dados de cor representam tons de cinza.
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormatBlackWhite | 1 | 1 | 1 | UINT |
GUID_WICPixelFormat2bppGray | 1 | 2 | 2 | UINT |
GUID_WICPixelFormat4bppGray | 1 | 4 | 4 | UINT |
GUID_WICPixelFormat8bppGray | 1 | 8 | 8 | UINT |
GUID_WICPixelFormat16bppGray | 1 | 16 | 16 | UINT |
GUID_WICPixelFormat16bppGrayFixedPoint | 1 | 16 | 16 | FixedPoint |
GUID_WICPixelFormat16bppGrayHalf | 1 | 16 | 16 | Float |
GUID_WICPixelFormat32bppGrayFloat | 1 | 32 | 32 | Float |
GUID_WICPixelFormat32bppGrayFixedPoint | 1 | 32 | 32 | FixedPoint |
Formatos de pixel RGB/BGR
A tabela a seguir lista os formatos RGB/BGR fornecidos pelo WIC. Esses formatos separam os dados de cor primária nos canais vermelho (R), verde (G) e azul (B). Um canal alfa (A) adicional é fornecido para informações de opacidade em alguns formatos.
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormat24bppRGB | 3 | 8 | 24 | UINT |
GUID_WICPixelFormat24bppBGR | 3 | 8 | 24 | UINT |
GUID_WICPixelFormat32bppBGR | 3 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppRGBA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppBGRA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppRGBE* | 4 | 8 | 32 | Float |
GUID_WICPixelFormat32bppPRGBA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat32bppPBGRA | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat48bppRGB | 3 | 16 | 48 | UINT |
GUID_WICPixelFormat48bppBGR | 3 | 16 | 48 | UINT |
GUID_WICPixelFormat48bppRGBFixedPoint | 3 | 16 | 48 | Fixo |
GUID_WICPixelFormat48bppBGRFixedPoint | 3 | 16 | 48 | Fixo |
GUID_WICPixelFormat48bppRGBHalf | 3 | 16 | 48 | Float |
GUID_WICPixelFormat64bppRGBA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppBGRA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppPRGBA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppPBGRA | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat64bppRGBFixedPoint | 3 | 16 | 64 | Fixo |
GUID_WICPixelFormat64bppRGBAFixedPoint | 4 | 16 | 64 | Fixo |
GUID_WICPixelFormat64bppBGRAFixedPoint | 4 | 16 | 64 | Fixo |
GUID_WICPixelFormat64bppRGBHalf | 3 | 16 | 64 | Float |
GUID_WICPixelFormat64bppRGBAHalf | 4 | 16 | 64 | Float |
GUID_WICPixelFormat96bppRGBFixedPoint | 3 | 32 | 96 | Fixo |
GUID_WICPixelFormat128bppRGBFloat | 3 | 32 | 128 | Float |
GUID_WICPixelFormat128bppRGBAFloat | 4 | 32 | 128 | Float |
GUID_WICPixelFormat128bppPRGBAFloat | 4 | 32 | 128 | Float |
GUID_WICPixelFormat128bppRGBFixedPoint | 3 | 32 | 128 | Fixo |
GUID_WICPixelFormat128bppRGBAFixedPoint | 4 | 32 | 128 | Fixo |
Observação
*O formato GUID_WICPixelFormat32bppRGBE codifica três valores de ponto flutuante de 16 bits em 4 bytes, da seguinte maneira: três mantissas de 8 bits sem sinal para os canais R, G e B, além de um expoente compartilhado de 8 bits. Esse formato fornece precisão de ponto flutuante de 16 bits em uma representação de pixel menor.
A partir do Windows 8 e da Atualização de plataforma para Windows 7, o WIC fornece formatos adicionais, mostrados na tabela aqui.
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormat32bppRGB | 3 | 8 | 32 | UINT |
GUID_WICPixelFormat64bppRGB | 3 | 16 | 64 | UINT |
GUID_WICPixelFormat96bppRGBFloat | 3 | 32 | 96 | FLOAT |
GUID_WICPixelFormat64bppPRGBAHalf | 4 | 16 | 64 | FLOAT |
Formatos de pixel CMYK
A tabela a seguir lista os formatos CMYK fornecidos pelo WIC. Esses formatos separam os dados de cor primária nos canais ciano (C), magenta (M), amarelo (Y) e preto (K).
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormat32bppCMYK | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat64bppCMYK | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat40bppCMYKAlpha | 5 | 8 | 40 | UINT |
GUID_WICPixelFormat80bppCMYKAlpha | 5 | 16 | 80 | UINT |
Formatos de pixel n-channel
A tabela a seguir lista os formatos n-channel fornecidos pelo WIC. Esses formatos fornecem vários canais de cor indefinidos para armazenar dados de imagem.
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormat24bpp3Channels | 3 | 8 | 24 | UINT |
GUID_WICPixelFormat48bpp3Channels | 3 | 16 | 48 | UINT |
GUID_WICPixelFormat32bpp3ChannelsAlpha | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat64bpp3ChannelsAlpha | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat32bpp4Channels | 4 | 8 | 32 | UINT |
GUID_WICPixelFormat64bpp4Channels | 4 | 16 | 64 | UINT |
GUID_WICPixelFormat40bpp4ChannelsAlpha | 5 | 8 | 40 | UINT |
GUID_WICPixelFormat80bpp4ChannelsAlpha | 5 | 16 | 80 | UINT |
GUID_WICPixelFormat40bpp5Channels | 5 | 8 | 40 | UINT |
GUID_WICPixelFormat80bpp5Channels | 5 | 16 | 80 | UINT |
GUID_WICPixelFormat48bpp5ChannelsAlpha | 6 | 8 | 48 | UINT |
GUID_WICPixelFormat96bpp5ChannelsAlpha | 6 | 16 | 96 | UINT |
GUID_WICPixelFormat48bpp6Channels | 6 | 8 | 48 | UINT |
GUID_WICPixelFormat96bpp6Channels | 6 | 16 | 96 | UINT |
GUID_WICPixelFormat56bpp6ChannelsAlpha | 7 | 8 | 56 | UINT |
GUID_WICPixelFormat112bpp6ChannelsAlpha | 7 | 16 | 112 | UINT |
GUID_WICPixelFormat56bpp7Channels | 7 | 8 | 56 | UINT |
GUID_WICPixelFormat112bpp7Channels | 7 | 16 | 112 | UINT |
GUID_WICPixelFormat64bpp7ChannelsAlpha | 8 | 8 | 64 | UINT |
GUID_WICPixelFormat128bpp7ChannelsAlpha | 8 | 16 | 128 | UINT |
GUID_WICPixelFormat64bpp8Channels | 8 | 8 | 64 | UINT |
GUID_WICPixelFormat128bpp8Channels | 8 | 16 | 128 | UINT |
GUID_WICPixelFormat72bpp8ChannelsAlpha | 9 | 8 | 72 | UINT |
GUID_WICPixelFormat144bpp8ChannelsAlpha | 9 | 16 | 144 | UINT |
Formatos de pixel somente alfa
A tabela a seguir lista os formatos somente alfa fornecidos pelo WIC. Este formato contém apenas informações alfa.
Nome Amigável | Contagem de canais | Bits por canal | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|---|
GUID_WICPixelFormat8bppAlpha | 1 | 8 | 32 | UINT |
Formatos de pixel Y'CbCr
A tabela a seguir lista os formatos Y'CbCr fornecidos pelo WIC. Estes formatos separam os dados de cor primária em luma (Y), diferença de croma azul (Cb) e diferença de croma vermelho (Cr). Observe que esses formatos foram projetados para armazenar dados de pixel JFIF Y'CbCr JPEG.
Nome Amigável | Contagem de canais | Bits por Pixel | Tipo de armazenamento |
---|---|---|---|
GUID_WICPixelFormat8bppY | 1 | 8 | UINT |
GUID_WICPixelFormat8bppCb | 1 | 8 | UINT |
GUID_WICPixelFormat8bppCr | 1 | 8 | UINT |
GUID_WICPixelFormat16bppCbCr | 2 | 16 | UINT |
Espaço de cor
Os formatos de pixel em si não têm um espaço de cor. Geralmente, o espaço de cor é uma interpretação semântica dos valores de pixel que depende do contexto do bitmap. Algumas imagens identificam um contexto de cor que define o espaço de cor da imagem. Somente na ausência de um contexto de cor o espaço de cor deve ser inferido.
As informações de contexto de cor são definidas pela interface IWICColorContext para WIC. Para recuperar as informações de contexto de cor de um quadro de imagem, use o método GetColorContext.
Na ausência de informações de espaço de cor para uma imagem, a regra geral para inferência de espaço de cor é que os formatos UINT RGB e escala de cinza usam o espaço de cor RGB padrão (sRGB), enquanto os formatos RGB de ponto fixo e ponto flutuante e escala de cinza usam o espaço de cor RGB estendido (scRGB). O modelo de cor CMYK usa um espaço de cor RWOP.
Formatos de imagem nativos
Cada um dos codecs do WIC fornecidos pelo Windows dá suporte a um subconjunto dos formatos de pixel do WIC. Para cada codec, os formatos de decodificação com suporte podem ser diferentes dos formatos de codificação com suporte.
Ao decodificar uma imagem, se os dados forem armazenados nativamente em um formato de pixel sem suporte do decodificador, eles serão convertidos em um formato com suporte. Para determinar o formato de pixel de saída, chame IWICBitmapFrameDecode::GetPixelFormat.
Ao codificar uma imagem, use IWICBitmapFrameEncode::SetPixelFormat para solicitar que o codificador use um formato de pixel específico. O codificador retornará o formato de pixel com suporte mais próximo, que pode ser diferente do que foi solicitado.
As tabelas a seguir mostram os formatos de pixel compatíveis com cada um dos codecs WIC fornecidos pelo Windows.
Codec nativo de BMP
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat1bppIndexed | GUID_WICPixelFormat1bppIndexed |
GUID_WICPixelFormat4bppIndexed | GUID_WICPixelFormat4bppIndexed |
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
GUID_WICPixelFormat16bppBGR555 | GUID_WICPixelFormat16bppBGR555 |
GUID_WICPixelFormat16bppBGR565 | GUID_WICPixelFormat16bppBGR565 |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat32bppBGR | GUID_WICPixelFormat32bppBGR |
GUID_WICPixelFormat32bppBGRA* | GUID_WICPixelFormat32bppBGRA* |
GUID_WICPixelFormat64bppRGBAFixedPoint | GUID_WICPixelFormat32bppPBGRA |
GUID_WICPixelFormat64bppRGBAFixedPoint | |
GUID_WICPixelFormat64bppBGRAFixedPoint |
Observação
GUID_WICPixelFormat32bppBGRA tem suporte no Windows 8 e na Atualização de plataforma para Windows 7 e superior.
- Para codificar para esse formato, use a opção de codificador EnableV5Header32bppBGRA. O BMP será gravado com um cabeçalho BITMAPV5HEADER.
- Se um arquivo tiver um BITMAPV5HEADER, ele será decodificado como GUID_WICPixelFormat32bppBGRA.
Codec nativo de GIF
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
Codec nativo de ICO
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat32bppBGRA |
Codec nativo de JPEG
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat32bppCMYK | GUID_WICPixelFormat32bppCMYK |
Codec nativo de PNG
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat1bppIndexed | GUID_WICPixelFormat1bppIndexed |
GUID_WICPixelFormat2bppIndexed | GUID_WICPixelFormat2bppIndexed |
GUID_WICPixelFormat4bppIndexed | GUID_WICPixelFormat4bppIndexed |
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
GUID_WICPixelFormatBlackWhite | GUID_WICPixelFormatBlackWhite |
GUID_WICPixelFormat2bppGray | GUID_WICPixelFormat2bppGray |
GUID_WICPixelFormat4bppGray | GUID_WICPixelFormat4bppGray |
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat16bppGray | GUID_WICPixelFormat16bppGray |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat48bppRGB | GUID_WICPixelFormat48bppRGB |
GUID_WICPixelFormat64bppRGBA | GUID_WICPixelFormat48bppBGR |
GUID_WICPixelFormat64bppRGBA | |
GUID_WICPixelFormat64bppBGRA |
Codec nativo de TIFF
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat1bppIndexed | GUID_WICPixelFormat1bppIndexed |
GUID_WICPixelFormat4bppIndexed | GUID_WICPixelFormat4bppIndexed |
GUID_WICPixelFormat8bppIndexed | GUID_WICPixelFormat8bppIndexed |
GUID_WICPixelFormatBlackWhite | GUID_WICPixelFormatBlackWhite |
GUID_WICPixelFormat4bppGray | GUID_WICPixelFormat4bppGray |
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat16bppGray | GUID_WICPixelFormat16bppGray |
GUID_WICPixelFormat32bppGrayFloat | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppCMYK |
GUID_WICPixelFormat32bppPBGRA | GUID_WICPixelFormat48bppRGB |
GUID_WICPixelFormat48bppRGB | GUID_WICPixelFormat64bppRGBA |
GUID_WICPixelFormat32bppCMYK | |
GUID_WICPixelFormat40bppCMYKAlpha | |
GUID_WICPixelFormat64bppRGBA | |
GUID_WICPixelFormat64bppPRGBA | |
GUID_WICPixelFormat64bppCMYK | |
GUID_WICPixelFormat80bppCMYKAlpha | |
GUID_WICPixelFormat96bppRGBFloat* | |
GUID_WICPixelFormat128bppRGBAFloat | |
GUID_WICPixelFormat128bppPRGBAFloat |
Observação
Só há suporte a GUID_ WICPixelFormat96bppRGBFloat no Windows 8, na Atualização da Plataforma Windows 7 e superior.
Codec nativo de HEIF
Formatos somente profundidade e somente ganho. Esses GUIDs de formato de pixel permitem que os visualizadores de fotos recuperem representações alternativas de uma imagem HEIF.
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat8bppDepth | GUID_WICPixelFormat8bppDepth |
GUID_WICPixelFormat8bppGain | GUID_WICPixelFormat8bppGain |
Codec nativo do JPEG XR
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormatBlackWhite | GUID_WICPixelFormatBlackWhite |
GUID_WICPixelFormat8bppGray | GUID_WICPixelFormat8bppGray |
GUID_WICPixelFormat16bppBGR555 | GUID_WICPixelFormat16bppBGR555 |
GUID_WICPixelFormat16bppGray | GUID_WICPixelFormat16bppGray |
GUID_WICPixelFormat24bppBGR | GUID_WICPixelFormat24bppBGR |
GUID_WICPixelFormat24bppRGB | GUID_WICPixelFormat24bppRGB |
GUID_WICPixelFormat32bppBGR | GUID_WICPixelFormat32bppBGR |
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat48bppRGBFixedPoint | GUID_WICPixelFormat48bppRGBFixedPoint |
GUID_WICPixelFormat16bppGrayFixedPoint | GUID_WICPixelFormat16bppGrayFixedPoint |
GUID_WICPixelFormat32bppBGR101010 | GUID_WICPixelFormat32bppBGR101010 |
GUID_WICPixelFormat48bppRGB | GUID_WICPixelFormat48bppRGB |
GUID_WICPixelFormat64bppRGBA | GUID_WICPixelFormat64bppRGBA |
GUID_WICPixelFormat96bppRGBFixedPoint | GUID_WICPixelFormat96bppRGBFixedPoint |
GUID_WICPixelFormat96bppRGBFixedPoint | GUID_WICPixelFormat128bppRGBAFloat |
GUID_WICPixelFormat128bppRGBFloat | GUID_WICPixelFormat128bppRGBFloat |
GUID_WICPixelFormat32bppCMYK | GUID_WICPixelFormat32bppCMYK |
GUID_WICPixelFormat64bppRGBAFixedPoint | GUID_WICPixelFormat64bppRGBAFixedPoint |
GUID_WICPixelFormat128bppRGBAFixedPoint | GUID_WICPixelFormat128bppRGBAFixedPoint |
GUID_WICPixelFormat64bppCMYK | GUID_WICPixelFormat64bppCMYK |
GUID_WICPixelFormat24bpp3Channels | GUID_WICPixelFormat24bpp3Channels |
GUID_WICPixelFormat32bpp4Channels | GUID_WICPixelFormat32bpp4Channels |
GUID_WICPixelFormat40bpp5Channels | GUID_WICPixelFormat40bpp5Channels |
GUID_WICPixelFormat48bpp6Channels | GUID_WICPixelFormat48bpp6Channels |
GUID_WICPixelFormat56bpp7Channels | GUID_WICPixelFormat56bpp7Channels |
GUID_WICPixelFormat64bpp8Channels | GUID_WICPixelFormat64bpp8Channels |
GUID_WICPixelFormat48bpp3Channels | GUID_WICPixelFormat48bpp3Channels |
GUID_WICPixelFormat64bpp4Channels | GUID_WICPixelFormat64bpp4Channels |
GUID_WICPixelFormat80bpp5Channels | GUID_WICPixelFormat80bpp5Channels |
GUID_WICPixelFormat96bpp6Channels | GUID_WICPixelFormat96bpp6Channels |
GUID_WICPixelFormat112bpp7Channels | GUID_WICPixelFormat112bpp7Channels |
GUID_WICPixelFormat128bpp8Channels | GUID_WICPixelFormat128bpp8Channels |
GUID_WICPixelFormat40bppCMYKAlpha | GUID_WICPixelFormat40bppCMYKAlpha |
GUID_WICPixelFormat80bppCMYKAlpha | GUID_WICPixelFormat80bppCMYKAlpha |
GUID_WICPixelFormat32bpp3ChannelsAlpha | GUID_WICPixelFormat32bpp3ChannelsAlpha |
GUID_WICPixelFormat64bpp7ChannelsAlpha | GUID_WICPixelFormat40bpp4ChannelsAlpha |
GUID_WICPixelFormat72bpp8ChannelsAlpha | GUID_WICPixelFormat48bpp5ChannelsAlpha |
GUID_WICPixelFormat64bpp3ChannelsAlpha | GUID_WICPixelFormat56bpp6ChannelsAlpha |
GUID_WICPixelFormat80bpp4ChannelsAlpha | GUID_WICPixelFormat64bpp7ChannelsAlpha |
GUID_WICPixelFormat96bpp5ChannelsAlpha | GUID_WICPixelFormat72bpp8ChannelsAlpha |
GUID_WICPixelFormat112bpp6ChannelsAlpha | GUID_WICPixelFormat64bpp3ChannelsAlpha |
GUID_WICPixelFormat128bpp7ChannelsAlpha | GUID_WICPixelFormat80bpp4ChannelsAlpha |
GUID_WICPixelFormat144bpp8ChannelsAlpha | GUID_WICPixelFormat96bpp5ChannelsAlpha |
GUID_WICPixelFormat64bppRGBAHalf | GUID_WICPixelFormat112bpp6ChannelsAlpha |
GUID_WICPixelFormat48bppRGBHalf | GUID_WICPixelFormat128bpp7ChannelsAlpha |
GUID_WICPixelFormat32bppRGBE | GUID_WICPixelFormat144bpp8ChannelsAlpha |
GUID_WICPixelFormat16bppGrayHalf | GUID_WICPixelFormat64bppRGBAHalf |
GUID_WICPixelFormat32bppGrayFixedPoint | GUID_WICPixelFormat48bppRGBHalf |
GUID_WICPixelFormat64bppRGBFixedPoint | GUID_WICPixelFormat32bppRGBE |
GUID_WICPixelFormat128bppRGBFixedPoint | GUID_WICPixelFormat16bppGrayHalf |
GUID_WICPixelFormat64bppRGBHalf | GUID_WICPixelFormatBlackWhite |
Codec nativo do DDS
Formatos de pixel do decodificador | Formatos de pixel do codificador |
---|---|
GUID_WICPixelFormat32bppBGRA | GUID_WICPixelFormat32bppBGRA |
GUID_WICPixelFormat32bppPBGRA | GUID_WICPixelFormat32bppPBGRA |
Observação
O codec fornecido pelo Windows DDS dá suporte a arquivos DDS codificados usando os seguintes valores de DXGI_FORMAT:
- DXGI_FORMAT_BC1_UNORM
- DXGI_FORMAT_BC2_UNORM
- DXGI_FORMAT_BC3_UNORM
Eles são decodificados e codificados como GUID_WICPixelFormat32bppBGRA ou GUID_WICPixelFormat32bppPBGRA. Para obter mais informações, confira a visão geral do formato DDS.
extensibilidade de formato de pixel
Formatos de imagem personalizados podem usar formatos de pixel que não são fornecidos nativamente pelo WIC, como YCbCr (YUV) e YCCK (Y/Cb/Cr/K). O WIC fornece um modelo de extensibilidade que permite que os formatos de pixel interno e de suplemento funcionem no mesmo pipeline de imagens. Para integrar esses formatos de pixel ao pipeline de imagem do WIC, você deve criar conversores de formato de pixel para converter formatos de pixel de suplemento em um ou mais dos formatos de pixel nativos. A interface principal para a criação de conversores de formato é IWICFormatConverter.