Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp ziet u hoe u een afbeelding met meerdere frames kunt decoderen en elk frame kunt ophalen voor verwerking.
De frames van een afbeelding ophalen
Maak een IWICImagingFactory- om WIC-objecten (Windows Imaging Component) te maken.
// Create WIC factory hr = CoCreateInstance( CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pIWICFactory) );
Gebruik de methode CreateDecoderFromFilename om een IWICBitmapDecoder- te maken op basis van een afbeeldingsbestand.
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 );
Haal het aantal frames in de afbeeldingen op.
// Retrieve the frame count of the image. if (SUCCEEDED(hr)) { hr = pIDecoder->GetFrameCount(&nFrameCount); }
Elk frame verwerken door een IWICBitmapFrameDecode te verkrijgen voor elk frame in de afbeelding.
// 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); }
Zie ook