Sdílet prostřednictvím


Jak škálovat zdroj rastrového obrázku

Toto téma ukazuje, jak škálovat IWICBitmapSource pomocí komponenty IWICBitmapScaler.

Škálování zdroje rastrového obrázku

  1. Vytvořte objekt IWICImagingFactory pro vytvoření objektů wic (Windows Imaging Component).

    // Create WIC factory
    hr = CoCreateInstance(
        CLSID_WICImagingFactory,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_PPV_ARGS(&m_pIWICFactory)
        );
    
  2. Pomocí metody CreateDecoderFromFilename vytvořte IWICBitmapDecoder ze souboru obrázku.

    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. Získejte první IWICBitmapFrameDecode obrázek.

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

    Formát souboru JPEG podporuje pouze jeden rámec. Vzhledem k tomu, že soubor v tomto příkladu je soubor JPEG, použije se první snímek (0). Formáty obrázků, které mají více snímků, najdete v tématu Jak načíst rámce obrázku pro přístup k jednotlivým snímkům obrázku.

  4. Vytvořte IWICBitmapScaler, který se má použít pro škálování image.

    // Create the scaler.
    if (SUCCEEDED(hr))
    {
       hr = m_pIWICFactory->CreateBitmapScaler(&pIScaler);
    }
    
  5. Inicializujte objekt scaler s obrazovými daty bitmapového rámce na polovinu velikosti.

    // 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. Nakreslete nebo zpracujte škálovaný zdroj rastrového obrázku.

    Následující obrázek znázorňuje škálování obrázků. Původní obrázek vlevo je 200 x 130 pixelů. Obrázek vpravo je původní obrázek škálovaný na polovinu velikosti.

    obrázek znázorňující změnu velikosti obrázku na menší

Viz také

Průvodce programováním

Referenční

Ukázky