Leer en inglés

Compartir a través de


Copia de fotogramas individuales de una imagen de varios fotogramas

En el ejemplo siguiente se recuperan los fotogramas individuales de un archivo TIFF de varios fotogramas. Cuando se creó el archivo TIFF, los marcos individuales se agregaron a la dimensión Page (vea Creating and Saving a Multiple-Frame Image). El código muestra cada una de las cuatro páginas y guarda cada página en un archivo de disco PNG independiente.

El código construye un objeto Image a partir del archivo TIFF de varios fotogramas. Para recuperar los marcos individuales (páginas), el código llama al método Image::SelectActiveFrame de ese objeto Image . El primer argumento pasado al método Image::SelectActiveFrame es la dirección de un GUID que especifica la dimensión en la que los marcos se agregaron anteriormente al archivo TIFF de varios fotogramas. El GUID FrameDimensionPage se define en Gdiplusimaging.h. Otros GUID definidos en ese archivo de encabezado son FrameDimensionTime y FrameDimensionResolution. El segundo argumento pasado al método Image::SelectActiveFrame es el índice de base cero de la página deseada.

El código se basa en la función auxiliar GetEncoderClsid, que se muestra en Recuperación del identificador de clase de un codificador.

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);

En la ilustración siguiente se muestran las páginas individuales tal como se muestra en el código anterior.

ilustración en la que se muestra una forma geométrica, una foto de color, una foto monocromática y una forma geométrica diferente