Delen via


Een bitmapbron schalen

In dit onderwerp wordt gedemonstreert hoe u een IWICBitmapSource- schaalt met behulp van het onderdeel IWICBitmapScaler.

Een bitmapbron schalen

  1. Maak een IWICImagingFactory-object om WIC-objecten (Windows Imaging Component) te maken.

    // Create WIC factory
    hr = CoCreateInstance(
        CLSID_WICImagingFactory,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_PPV_ARGS(&m_pIWICFactory)
        );
    
  2. Gebruik de methode CreateDecoderFromFilename om een IWICBitmapDecoder- te maken op basis van een afbeeldingsbestand.

    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. Haal het eerste IWICBitmapFrameDecode van de afbeelding op.

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

    De JPEG-bestandsindeling ondersteunt slechts één frame. Omdat het bestand in dit voorbeeld een JPEG-bestand is, wordt het eerste frame (0) gebruikt. Zie voor afbeeldingsindelingen met meerdere frames Het ophalen van de frames van een afbeelding voor toegang tot elk frame van de afbeelding.

  4. Maak de IWICBitmapScaler- aan om te gebruiken voor het schalen van de afbeelding.

    // Create the scaler.
    if (SUCCEEDED(hr))
    {
       hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler);
    }
    
  5. Initialiseer het schaalobject met de afbeeldingsgegevens van het bitmapframe op halve grootte.

    // 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. Teken of verwerkt de geschaalde bitmapbron.

    In de volgende afbeelding ziet u het schalen van afbeeldingen. De oorspronkelijke afbeelding aan de linkerkant is 200 x 130 pixels. De afbeelding aan de rechterkant is de oorspronkelijke afbeelding die is geschaald tot de helft van de grootte.

    afbeelding van het schalen van een afbeelding naar een kleiner formaat

Zie ook

Programmeerhandleiding

Referentie

voorbeelden