Copier des images individuelles à partir d’une image à plusieurs images

L’exemple suivant récupère les images individuelles d’un fichier TIFF à plusieurs images. Lorsque le fichier TIFF a été créé, les trames individuelles ont été ajoutées à la dimension Page (voir Création et enregistrement d’une image Multiple-Frame). Le code affiche chacune des quatre pages et enregistre chaque page dans un fichier de disque PNG distinct.

Le code construit un objet Image à partir du fichier TIFF à plusieurs images. Pour récupérer les images individuelles (pages), le code appelle la méthode Image::SelectActiveFrame de cet objet Image . Le premier argument passé à la méthode Image::SelectActiveFrame est l’adresse d’un GUID qui spécifie la dimension dans laquelle les images ont été précédemment ajoutées au fichier TIFF à plusieurs images. Le GUID FrameDimensionPage est défini dans Gdiplusimaging.h. Les autres GUID définis dans ce fichier d’en-tête sont FrameDimensionTime et FrameDimensionResolution. Le deuxième argument passé à la méthode Image::SelectActiveFrame est l’index de base zéro de la page souhaitée.

Le code s’appuie sur la fonction d’assistance GetEncoderClsid, qui est illustrée dans Récupération de l’identificateur de classe pour un encodeur.

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

L’illustration suivante montre les pages individuelles telles qu’affichées par le code précédent.

illustration montrant une forme géométrique, une photo couleur, une photo monochrome et une forme géométrique différente