Novidades no WIC
O WIC (Componente de Imagens do Windows) foi atualizado com novas versões do Windows. Este tópico fornece uma rápida introdução a esses novos recursos.
Novidades do Windows 10, versão 1507
Acesso a dados JPEG de baixo nível para decodificação e codificação wic
A partir do Windows 10, versão 1507, o WIC fornece acesso a estruturas de dados JPEG de baixo nível, incluindo Huffman e tabelas de quantização. Para obter mais informações, consulte estes tópicos:
Indexação JPEG
A indexação JPEG é uma técnica que melhora significativamente o desempenho de acessar aleatoriamente pequenas sub-regiões de uma imagem JPEG grande, ao custo de algum uso adicional de memória. A indexação JPEG pode ser aproveitada por qualquer chamador do WIC.
A interface ID2D1ImageSourceFromWic foi projetada para aproveitar a indexação JPEG se ela estiver ativada. Por exemplo, a API ID2D1ImageSource solicitará apenas as seções necessárias da imagem em um cenário como panorâmica e zoom para uma imagem de resolução grande. Para obter mais informações, consulte estes tópicos:
Novidades para Windows 8.1
Suporte para imagens JPEG YCbCr
A partir do Windows 8.1, o WIC fornece suporte para decodificação, transformação e codificação de dados de imagem JPEG Y'CbCr em seu formato nativo. Isso permite que os aplicativos diminuam significativamente o tempo de processamento e o consumo de memória para determinadas operações de geração de imagens ao trabalhar com JPEGs codificados em Y'CbCr. Para obter mais informações, consulte estes tópicos:
- efeito Direct2DYCbCr
- Interface IWICPlanarBitmapSourceTransform
- Interface IWICPlanarBitmapFrameEncode
Suporte para formatos compactados em bloco (arquivos DDS)
A partir do Windows 8.1, o WIC adiciona um novo codec que dá suporte a imagens DDS codificadas nos seguintes formatos: DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC2_UNORM e DXGI_FORMAT_BC3_UNORM. Os dados compactados do bloco DDS podem ser acessados em um formulário decodificado usando interfaces WIC padrão ou acessados diretamente usando novas interfaces específicas do DDS. Para obter mais informações, consulte estes tópicos:
Novidades para Windows 8
Em Windows 8, o WIC foi atualizado com vários novos recursos. A versão atualizada do WIC também está disponível no Windows 7 e no Windows Server 2008 R2 por meio da Atualização de Plataforma para Windows 7, que está disponível por meio da Atualização de Plataforma para Windows 7.
Integração de Direct2D aprimorada
O WIC no Windows 8 fornece estas APIs para melhorar Direct2D integração com o WIC:
- IWICImageEncoder - Uma nova interface que pode codificar o conteúdo Direct2D ID2D1Image para um IWICBitmapFrameEncode. Os métodos dessa interface levam um ponteiro para WICImageParameters, que são parâmetros para controlar a codificação.
- IWICImagingFactory2 - Nova fábrica wic com o método CreateImageEncoder . Essa interface herda da fábrica wic original, IWICImagingFactory, e é criada da mesma maneira.
Alterações no suporte a codec alpha do BMP
O WIC no Windows 8 dá suporte ao carregamento de arquivos de imagem BITMAPV5HEADER como imagens formatadas em WICPixelFormat32bppBGRA. Além disso, o codificador BMP dá suporte a uma nova opção booliana e codificadora "EnableV5Header32bppBGRA", que instrui o codificador a gravar um BITMAPV5HEADER com os dados de imagem 32bppBGRA.
Para obter mais informações sobre formatos BMP, consulte Visão geral do formato BMP.
Novos formatos de pixel
O WIC no Windows 8 define estes novos formatos de pixel:
- GUID_WICPixelFormat32bppRGB
- GUID_WICPixelFormat64bppRGB
- GUID_WICPixelFormat96bppRGBFloat
- GUID_WICPixelFormat64bppPRGBAHalf
Observação
O codec interno do TIFF retornará GUID_WICPixelFormat96bppRGBFloat dados. Os outros três formatos não são usados por codecs internos.
Restrições à extensibilidade de componente no AppContainer
Ao executar em um processo AppContainer, que inclui todos os aplicativos da Windows Store, o WIC usará apenas componentes fornecidos pelo Windows, independentemente de componentes adicionais estarem instalados no sistema. O aplicativo que não está em execução no AppContainer não é afetado.
Os aplicativos não precisam fazer alterações de código para serem executados em um AppContainger, mas o sinalizador WICComponentEnumerateOptions e os parâmetros GUID do fornecedor não terão efeito. O WIC não carregará uma imagem se ela não puder ser decodificada por um codec fornecido pelo Windows e chamar o método CreateComponentEnumerator retornará apenas componentes fornecidos pelo Windows.
Alterações no CLSID_WICPngDecoder e suporte ao contexto de cor do decodificador PNG
CLSID_WICPngDecoder1 foi adicionado com o mesmo GUID que CLSID_WICPngDecoder e CLSID_WICPngDecoder2 foi adicionado.
Quando compilado no SDK do Windows 8, CLSID_WICPngDecoder é #defined para CLSID_WICPngDecoder2 para promover aplicativos recém-compilados usando o novo comportamento do decodificador PNG. Os aplicativos devem continuar a especificar CLSID_WICPngDecoder.
Especificar CLSID_WICPngDecoder2 criará uma versão do decodificador PNG do WIC que gerará um IWICColorContext das partes cHRM e gAMA. Isso permite que esses metadados de espaço de cor sejam usados com outras APIs do Windows para o gerenciamento de cores da imagem de origem. Um IWICColorContext não será gerado das partes gAMA e cHRM se uma parte iCCP estiver presente, se uma parte sRGB estiver presente ou se as partes gAMA e cHRM indicarem um espaço de cor sRGB.
Um aplicativo pode especificar CLSID_WICPngDecoder1 para criar uma versão do decodificador PNG wic que não gera um IWICColorContext das partes gAMA e cHRM. Isso corresponde ao comportamento do decodificador PNG em versões anteriores do Windows.
Alterações no WINCODEC_SDK_VERSION
Quando compilado no SDK do Windows 8, WINCODEC_SDK_VERSION é #defined para WINCODEC_SDK_VERSION2 para promover aplicativos recém-compilados usando o novo comportamento do decodificador PNG. Caso contrário, será #defined WINCODEC_SDK_VERSION1. Os aplicativos devem continuar a especificar WINCODEC_SDK_VERSION.
Especificar WINCODEC_SDK_VERSION ao chamar WICCreateImagingFactory_Proxy para criar a fábrica de imagens faz com que CLSID_WICPngDecoder2 sejam criados em vez de CLSID_WICPngDecoder1 do método CreateDecoder e suas variantes. Além disso, um enumerador de informações do componente decodificador retornará CLSID_WICPngDecoder2 informações do componente, mas não CLSID_WICPngDecoder1 informações.
Especificar WINCODEC_SDK_VERSION1 fará com que CLSID_WICPngDecoder1 sejam usados em vez de CLSID_WICPngDecoder2 nos casos acima.
Alterações no CLSID_WICImagingFactory
CLSID_WICImagingFactory1 foi adicionado com o mesmo GUID que CLSID_WICImagingFactory e CLSID_WICImagingFactory2 foi adicionado.
Quando compilado no SDK do Windows 8, CLSID_WICImagingFactory é #defined para CLSID_WICImagingFactory2 para promover aplicativos recém-compilados usando o novo comportamento do decodificador PNG. Os aplicativos devem continuar a especificar CLSID_WICImagingFactory.
Especificar CLSID_WICImagingFactory2 ao chamar CoCreateInstance para criar a fábrica de imagens faz com que CLSID_WICPngDecoder2 sejam criados em vez de CLSID_WICPngDecoder1 do método CreateDecoder e suas variantes. Além disso, um enumerador de informações do componente decodificador retornará CLSID_WICPngDecoder2 informações do componente, mas não CLSID_WICPngDecoder1 informações.
Especificar CLSID_WICImagingFactory1 fará com que CLSID_WICPngDecoder1 sejam usados em vez de CLSID_WICPngDecoder2 nos casos acima.
Novidades do Windows 7
No Windows 7, o WIC foi atualizado com vários novos recursos. Este tópico fornece uma rápida introdução a esses novos recursos.
Atualizações para o Codec TIFF
O codec TIFF do WIC foi atualizado para o Windows 7 para dar suporte a vários recursos sem suporte na versão anterior do WIC.
- Suporte para arquivos TIFF grandes.
- Decodificar imagens TIFF lado a lado.
- Decodificar imagens TIFF simples (planar).
- Decodificar imagens TIFF codificadas em JPEG.
Decodificação progressiva
A decodificação progressiva fornece a capacidade de decodificar e renderizar incrementalmente partes de uma imagem antes que toda a imagem termine de ser baixada. Esse recurso melhora muito a experiência do usuário ao exibir imagens da Internet, pois o usuário não precisa esperar que toda a imagem seja baixada antes que a decodificação possa começar. Com a decodificação progressiva, os usuários podem ver uma visualização de imagem com os dados disponíveis muito antes de toda a imagem ser baixada. Esse recurso é essencial para qualquer aplicativo usado para exibir imagens da Internet ou de fontes de dados com largura de banda limitada.
Para obter mais informações, consulte a Visão geral da decodificação progressiva.
Suporte de metadados estendidos para JPEG, PNG e GIF
No Windows 7, o WIC ampliou seu suporte a metadados para imagens JPEG, PNG e GIF.
- Adicionado suporte para propriedades GIF e GIF animadas.
- Manipuladores de metadados JPG expandidos para dar suporte a metadados de chrominance, luminance e comment.
- Manipuladores de metadados PNG expandidos para dar suporte a metadados tIME, sRGB, iCCP, hIST, cHRM, iTXt, bKGD e gAMA.
- Adicionados novos manipuladores de metadados 8BIM para metadados ResolutionInfo e metadados de resumo IPTC.
- Foram adicionados novos manipuladores de metadados para os metadados LSD (Descritor de Tela Lógica), Descritor de Imagem (IMD), GCE (Extensão de Controle Gráfico) e Metadados de Extensões de Aplicativo (APE).
- Suporte para metadados que abrangem blocos APPn.
Suporte a apartamentos com vários threads
Objetos em um MTA (apartamento multithread) podem ser chamados simultaneamente por qualquer número de threads dentro do MTA, permitindo um melhor desempenho em sistemas multicore e em determinados cenários de servidor. Além disso, os codecs WIC que residem em um MTA podem chamar outros objetos que residem no MTA sem o custo de marshaling associado à chamada entre threads que residem em diferentes apartamentos STA. No Windows 7, todos os codecs WIC in-box foram atualizados para dar suporte ao MTA, incluindo JPEG, TIFF, PNG, GIF, ICO e BMP. É altamente recomendável que os codecs sejam gravados para dar suporte ao MTA. Codecs que não dão suporte ao MTA causarão uma significativa degredação de desempenho em aplicativos multithread devido ao marshaling. Habilitar o suporte ao MTA requer que a sincronização adequada seja implementada no codec. A implementação exata dessas técnicas de sincronização está além do escopo deste artigo. Uma referência geral para sincronizar objetos COM (Component Object Model) é fornecida abaixo.
Implementações de grupo de trabalho de metadados
Atualmente, há uma variedade de formatos de armazenamento de metadados que contêm propriedades sobrepostas, sem qualquer padrão claro do setor ou diretrizes sobre métodos consistentes para ler e gravar esses formatos de metadados. Para ajudar com essa variedade de formatos e propriedades, o MWG (Grupo de Trabalho de Metadados) foi formado. O objetivo do MWG é fornecer diretrizes que garantam a interoperabilidade entre uma ampla variedade de plataformas, aplicativos e dispositivos. As diretrizes estabelecidas pelo MWG se aplicam aos campos de metadados XMP, Exif e IPTC e aos formatos de imagem JPEG, TIFF e PSD.
No Windows 7, o manipulador de metadados de fotos e a camada de política de metadados foram atualizados para ler e gravar metadados de imagem de acordo com as diretrizes estabelecidas pelo MWG. Para obter mais informações sobre o MWG (Grupo de Trabalho de Metadados), veja as diretrizes de metadados estabelecidas.
Recursos do Windows 7 com suporte no Windows Vista e no Windows Server 2008
A Atualização de Plataforma para Windows Vista é um conjunto de bibliotecas em tempo de execução que permite aos desenvolvedores direcionar aplicativos para o Windows 7 e o Windows Vista. A Atualização de Plataforma para Windows Server 2008 é um conjunto de bibliotecas em tempo de execução que permite aos desenvolvedores direcionar aplicativos para o Windows Server 2008 R2 e o Windows Server 2008. A Atualização de Plataforma para Windows Vista e a Atualização de Plataforma para Windows Server 2008 estarão disponíveis para todos os clientes do Windows Vista e do Windows Server 2008 por meio de Windows Update. Aplicativos de terceiros que exigem Atualização de Plataforma para Windows Vista ou Atualização de Plataforma para Windows Server 2008 podem ter Windows Update detectar se a atualização necessária está instalada; se não estiver, Windows Update a baixará e instalará em segundo plano. Para obter mais informações sobre ambas as atualizações, consulte Atualização de plataforma para Windows Vista