Freigeben über


Abrufen der Frames aus einem Bild

In diesem Thema wird veranschaulicht, wie Sie ein Multiframebild decodieren und jeden Frame zur Verarbeitung abrufen.

So rufen Sie die Frames eines Bilds ab

  1. Erstellen Sie eine IWICImagingFactory , um WIC-Objekte (Windows Imaging Component) zu erstellen.

    // Create WIC factory
    hr = CoCreateInstance(
        CLSID_WICImagingFactory,
        NULL,
        CLSCTX_INPROC_SERVER,
        IID_PPV_ARGS(&m_pIWICFactory)
        );
    
  2. Verwenden Sie die CreateDecoderFromFilename-Methode , um einen IWICBitmapDecoder aus einer Bilddatei zu erstellen.

    HRESULT hr = S_OK;
    
    IWICBitmapDecoder *pIDecoder = NULL;
    IWICBitmapFrameDecode *pIDecoderFrame  = NULL;
    UINT nFrameCount = 0;
    UINT uiWidth, uiHeight;
    
    // Create decoder for an image.
    hr = m_pIWICFactory->CreateDecoderFromFilename(
       L"creek.tiff",                  // 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. Rufen Sie die Anzahl der Frames in den Bildern ab.

    // Retrieve the frame count of the image.
    if (SUCCEEDED(hr))
    {
       hr = pIDecoder->GetFrameCount(&nFrameCount);
    }
    
  4. Verarbeiten Sie jeden Frame, indem Sie einen IWICBitmapFrameDecode für jeden Frame im Bild abrufen.

    // Process each frame in the image.
    for (UINT i=0; i < nFrameCount; i++)
    {
       // Retrieve the next bitmap frame.
       if (SUCCEEDED(hr))
       {
          hr = pIDecoder->GetFrame(i, &pIDecoderFrame);
       }
    
       // Retrieve the size of the bitmap frame.
       if (SUCCEEDED(hr))
       {
          hr = pIDecoderFrame->GetSize(&uiWidth, &uiHeight);
       }
    
       // Additional frame processing.
       // ...
    
       SafeRelease(&pIDecoderFrame);
    }
    

Weitere Informationen

Programmierhandbuch

Referenz

Beispiele