Copiare singoli fotogrammi da un'immagine a più fotogrammi
Nell'esempio seguente vengono recuperati i singoli frame da un file TIFF a più fotogrammi. Quando è stato creato il file TIFF, i singoli fotogrammi sono stati aggiunti alla dimensione Pagina (vedere Creazione e salvataggio di un'immagine Multiple-Frame). Il codice visualizza ognuno dei quattro pagine e salva ogni pagina in un file di disco PNG separato.
Il codice costruisce un oggetto Image dal file TIFF a più fotogrammi. Per recuperare i singoli frame (pagine), il codice chiama il metodo Image::SelectActiveFrame dell'oggetto Image . Il primo argomento passato al metodo Image::SelectActiveFrame è l'indirizzo di un GUID che specifica la dimensione in cui i fotogrammi sono stati aggiunti in precedenza al file TIFF a più fotogrammi. Il GUID FrameDimensionPage è definito in Gdiplusimaging.h. Altri GUID definiti in tale file di intestazione sono FrameDimensionTime e FrameDimensionResolution. Il secondo argomento passato al metodo Image::SelectActiveFrame è l'indice in base zero della pagina desiderata.
Il codice si basa sulla funzione helper GetEncoderClsid, visualizzata in Recupero dell'identificatore di classe per un codificatore.
GUID pageGuid = FrameDimensionPage;
CLSID encoderClsid;
Image multi(L"Multiframe.tif");
// Get the CLSID of the PNG encoder.
GetEncoderClsid(L"image/png", &encoderClsid);
// Display and save the first page (index 0).
multi.SelectActiveFrame(&pageGuid, 0);
graphics.DrawImage(&multi, 10, 10);
multi.Save(L"Page0.png", &encoderClsid, NULL);
// Display and save the second page.
multi.SelectActiveFrame(&pageGuid, 1);
graphics.DrawImage(&multi, 200, 10);
multi.Save(L"Page1.png", &encoderClsid, NULL);
// Display and save the third page.
multi.SelectActiveFrame(&pageGuid, 2);
graphics.DrawImage(&multi, 10, 150);
multi.Save(L"Page2.png", &encoderClsid, NULL);
// Display and save the fourth page.
multi.SelectActiveFrame(&pageGuid, 3);
graphics.DrawImage(&multi, 200, 150);
multi.Save(L"Page3.png", &encoderClsid, NULL);
La figura seguente mostra le singole pagine visualizzate dal codice precedente.