Condividi tramite


Come ridimensionare una sorgente bitmap

Questo argomento illustra come ridimensionare un IWICBitmapSource usando il componenteIWICBitmapScaler.

Per ridimensionare un'origine bitmap

  1. Creare un oggetto IWICImagingFactory per creare oggetti Windows Imaging Component (WIC).

    // Create WIC factory
    hr = CoCreateInstance(
        CLSID_WICImagingFactory,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_PPV_ARGS(&m_pIWICFactory)
        );
    
  2. Utilizzare il metodoCreateDecoderFromFilenameper creare unIWICBitmapDecoder da un file di immagine.

    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
       );
    
  3. Ottenere il primo IWICBitmapFrameDecode dell'immagine.

    // Retrieve the first bitmap frame.
    if (SUCCEEDED(hr))
    {
       hr = pIDecoder->GetFrame(0, &pIDecoderFrame);
    }
    

    Il formato di file JPEG supporta solo un singolo fotogramma. Poiché il file in questo esempio è un file JPEG, viene usato il primo frame (0). Per i formati di immagine con più fotogrammi, vedere Come recuperare i fotogrammi di un'immagine per accedere a ogni fotogramma dell'immagine.

  4. Creare il IWICBitmapScaler da usare per il ridimensionamento delle immagini.

    // Create the scaler.
    if (SUCCEEDED(hr))
    {
       hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler);
    }
    
  5. Inizializzare l'oggetto scaler con i dati dell'immagine del frame bitmap a metà della dimensione originale.

    // 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.
    }
    
  6. Disegnare o processare la bitmap sorgente ridimensionata.

    La figura seguente illustra il ridimensionamento dell'immagine. L'immagine originale a sinistra è 200 x 130 pixel. L'immagine a destra è l'immagine originale ridimensionata a metà delle dimensioni.

    illustrazione che mostra il ridimensionamento di un'immagine a una dimensione inferiore

Vedere anche

guida alla programmazione

riferimento

esempi di