Como dimensionar uma origem de bitmap
Este tópico demonstra como dimensionar um IWICBitmapSource usando o componente IWICBitmapScaler .
Para dimensionar uma origem de bitmap
Crie um objeto IWICImagingFactory para criar objetos WIC (Componente de Imagem do Windows).
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );
Use o método CreateDecoderFromFilename para criar um IWICBitmapDecoder de um arquivo de imagem.
HRESULT hr = S_OK; IWICBitmapDecoder *pIDecoder = NULL; IWICBitmapFrameDecode *pIDecoderFrame = NULL; IWICBitmapScaler *pIScaler = NULL; hr = m_pIWICFactory->CreateDecoderFromFilename( L"turtle.jpg", // Image to be decoded NULL, // Do not prefer a particular vendor GENERIC_READ, // Desired read access to the file WICDecodeMetadataCacheOnDemand, // Cache metadata when needed &pIDecoder // Pointer to the decoder );
Obtenha o primeiro IWICBitmapFrameDecode da imagem.
// Retrieve the first bitmap frame. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrame(0, &pIDecoderFrame); }
O formato de arquivo JPEG dá suporte apenas a um único quadro. Como o arquivo neste exemplo é um arquivo JPEG, o primeiro quadro (
0
) é usado. Para formatos de imagem que têm vários quadros, consulte Como recuperar os quadros de uma imagem para acessar cada quadro da imagem.Crie o IWICBitmapScaler a ser usado para o dimensionamento de imagens.
// Create the scaler. if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler); }
Inicialize o objeto scaler com os dados de imagem do quadro bitmap com metade do tamanho.
// Initialize the scaler to half the size of the original source. if (SUCCEEDED(hr)) { hr = pIScaler->Initialize( pIDecoderFrame, // Bitmap source to scale. uiWidth/2, // Scale width to half of original. uiHeight/2, // Scale height to half of original. WICBitmapInterpolationModeFant); // Use Fant mode interpolation. }
Desenhe ou processe a origem do bitmap dimensionado.
A ilustração a seguir demonstra o dimensionamento de imagens. A imagem original à esquerda é de 200 x 130 pixels. A imagem à direita é a imagem original dimensionada para metade do tamanho.
Consulte Também