Condividi tramite


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.

illustrazione che mostra una forma geometrica, una foto a colori, una foto monocromatica e una forma geometrica diversa