Como dimensionar uma origem de bitmap
Este tópico demonstra como dimensionar um IWICBitmapSource usando o componenteIWICBitmapScaler.
Para dimensionar uma fonte de bitmap
Crie um objeto IWICImagingFactory para criar objetos WIC (Windows Imaging Component).
// 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 a partir de um ficheiro 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 suporta apenas um único quadro. Como o arquivo neste exemplo é um arquivo JPEG, o primeiro quadro (
0
) é usado. Para formatos de imagem com vários quadros, consulte Como recuperar os quadros de uma imagem para acessar cada quadro da imagem.Crie o IWICBitmapScaler para usar no dimensionamento de imagem.
// Create the scaler. if (SUCCEEDED(hr)) { hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler); }
Inicialize o objeto de escala com os dados de imagem do quadro de bitmap na 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 fonte de bitmap dimensionada.
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.
Ver também