FAQ C++ BuilderConsultez toutes les FAQ
Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010 Ajouter une question
Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez
Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.
L'équipe C++ Builder de Developpez.
Commentez cette FAQ : Commentez
- Comment imprimer des images avec l'assistant Photograhie Windows ?
- Comment lister les informations sur les filtres ?
- Comment redimensionner une image à l'aide de WIA ?
- Comment combiner deux images à l'aide de WIA ?
- Comment fusionner verticalement deux images à l'aide de WIA ?
- Comment couper/rogner une image à l'aide de WIA ?
- Comment créer une image TIFF multipages à l'aide de WIA ?
- Comment contrôler qu'une image GIF est animée ou standard à l'aide de WIA ?
- Comment modifier le TAG (Titre, Commentaire, Auteur,...) d'une image à l'aide de WIA ?
- Comment lister les proprietés d'une image à l'aide de WIA ?
Pour utiliser l'assistant Photographie Windows il vous faut tout d'abord créer une connexion avec le WIA, ajouter les images à imprimer, et pour finir il ne suffit plus qu'à lancer l'assistant :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <utilcls.h> // <---- ne pas oublier d'inclure void __fastcall TForm1::Button1Click(TObject *Sender) { // impression d'image en utilisant WIA Variant vMSWIACommonDialog, vMSWIAVector; // créer un objet dialog vMSWIACommonDialog = Variant::CreateObject("WIA.CommonDialog"); vMSWIAVector = Variant::CreateObject("WIA.Vector"); // sélection des images vMSWIAVector.OleProcedure("Add", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\imageJPEG.jpg"); vMSWIAVector.OleProcedure("Add", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\imageBMP.bmp"); // impression vMSWIACommonDialog.OleProcedure("ShowPhotoPrintingWizard", vMSWIAVector); vMSWIACommonDialog = Unassigned; vMSWIAVector = Unassigned; } |
Les filtres permettent de faire des opérations sur les images grâce au WIA.
Ce code simple permet d'obtenir toutes les informations sur ces différents filtres dans un Mémo :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <utilcls.h> // <----- ne pas oublier d'inclure void __fastcall TForm1::Button1Click(TObject *Sender) { // lister Informations Générales Filtres Variant vMSWIAImageProcess; String sWIAFiltres, sWIADescriptFiltres; int iMSWIAnbFiltreDispo; // creation du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // nombre de filtres disponibles iMSWIAnbFiltreDispo = vMSWIAImageProcess.OlePropertyGet("FilterInfos").OlePropertyGet("Count"); // boucle sur l'ensemble des filtres disponibles Memo1->ScrollBars = ssVertical; for(int x = 1; x <= iMSWIAnbFiltreDispo; x++) { sWIAFiltres = vMSWIAImageProcess.OlePropertyGet("FilterInfos", x).OlePropertyGet("Name"); Memo1->Lines->Add(sWIAFiltres); sWIADescriptFiltres = vMSWIAImageProcess.OlePropertyGet("FilterInfos", x).OlePropertyGet("Description"); Memo1->Lines->Add(sWIADescriptFiltres); Memo1->Lines->Add("\r\n**************\r\n"); } } |
Pour redimensionner une image, il suffit d'utiliser le bon filtre :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <utilcls.h> // <---------ne pas oublier // redimensionner Image Variant vMSWIAImageProcess, vMSWIAImageFile; // Création conteneur pour l'image à manipuler vMSWIAImageFile = Variant::CreateObject("WIA.ImageFile"); // Création du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // Chargement de l'image dans le conteneur vMSWIAImageFile.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\imageOrigine.bmp"); // Ajoute le filtre pour redimensionner l'image (Scale) vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Scale").OlePropertyGet("FilterID"))); // Définit la largeur maxi pour le redimensionnement vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "MaximumWidth", 90); // Définit la hauteur maxi pour le redimensionnement vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "MaximumHeight", 90); // remarque : // Les proportions sont conservées. Le filtre prend en compte // les ratios et adapte la taille pour ne pas dépasser les valeurs maxi définies. // Application du filtre à l'image vMSWIAImageFile = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile); // Enregistre l'image redimensionnée vMSWIAImageFile.OleFunction("SaveFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\imageFinale.jpg"); |
Pour combiner deux images, il faut charger les images à combiner, puis utiliser le filtre approprié :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <utilcls.h> // <---------ne pas oublier // combiner Deux Images Variant vMSWIAImageProcess, vMSWIAImageFile1, vMSWIAImageFile2; // Création conteneur pour l'image à manipuler vMSWIAImageFile1 = Variant::CreateObject("WIA.ImageFile"); // remarque: vous devez créer un conteneur pour chaque image vMSWIAImageFile2 = Variant::CreateObject("WIA.ImageFile"); // Création du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // Chargement de la 1ere image dans le conteneur vMSWIAImageFile1.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\YourBmpHere.bmp"); // Remarque pour cet exemple : // Les dimensions de la 2ème image doivent être plus petites que la première afin // que celle-ci ne soit pas totalement masquée // Chargement de la 2ème image dans le conteneur vMSWIAImageFile2.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\Photo\\Photo.jpg"); // Ajoute le filtre pour combiner/fusionner (Stamp) vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Stamp").OlePropertyGet("FilterID"))); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "ImageFile", vMSWIAImageFile2); // définit la position horizontale de la 2eme image pour la fusion vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Left", (vMSWIAImageFile1.OlePropertyGet("Width") - vMSWIAImageFile2.OlePropertyGet("Width"))); // définit la position verticale de la 2eme pour la fusion vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Top", (vMSWIAImageFile1.OlePropertyGet("Height") - vMSWIAImageFile2.OlePropertyGet("Height"))); // Application du filtre à la 1ere image vMSWIAImageFile1 = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile1); // sauvegarde de la nouvelle image vMSWIAImageFile1.OleFunction("SaveFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\fourmiz_ImageCombinee.JPG"); |
Pour fusionner deux images, il faut charger les images à fusionner, puis utiliser le filtre approprié :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <utilcls.h> // <---------ne pas oublier // Fusion Verticale Deux Images Variant Largeur, Hauteur, vMSWIAVector, vMSWIAImageProcess, vMSWIAImageFile1, vMSWIAImageFile2, vMSWIAImageFile3; long C; // Création conteneur pour l'image à manipuler vMSWIAImageFile1 = Variant::CreateObject("WIA.ImageFile"); // remarque: vous devez créer un conteneur pour chaque image vMSWIAImageFile2 = Variant::CreateObject("WIA.ImageFile"); // Création du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // Chargement de la 1ère image dans le conteneur // (l'image qui sera placée au-dessus) vMSWIAImageFile1.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\Grue_Atelier.jpg"); // Chargement de la 2ème image dans le conteneur // (l'image qui sera placée dessous) vMSWIAImageFile2.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\Photo\\Photo.jpg"); // ------création d'un support pour fusionner les deux images if(vMSWIAImageFile1.OlePropertyGet("Width") > vMSWIAImageFile2.OlePropertyGet("Width")) { Largeur = vMSWIAImageFile1.OlePropertyGet("Width"); } else { Largeur = vMSWIAImageFile2.OlePropertyGet("Width"); } Hauteur = vMSWIAImageFile1.OlePropertyGet("Height") + vMSWIAImageFile2.OlePropertyGet("Height"); C = 0x80000004; // couleur de fond vMSWIAVector = Variant::CreateObject("WIA.Vector"); vMSWIAVector.OleProcedure("Add", C); vMSWIAVector.OleProcedure("Add", C); vMSWIAVector.OleProcedure("Add", C); vMSWIAVector.OleProcedure("Add", C); vMSWIAImageFile3 = vMSWIAVector.OlePropertyGet("ImageFile", 2, 2); vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Scale").OlePropertyGet("FilterID"))); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "MaximumWidth", Largeur); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "MaximumHeight", Hauteur); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "PreserveAspectRatio", false); vMSWIAImageFile3 = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile3); // ------------------ // réinitialisation des filtres for(int i = 1; i <= vMSWIAImageProcess.OlePropertyGet("Filters").OlePropertyGet("Count"); i++) { vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Remove", i); } // fusionne l'image1 dans le support vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Stamp").OlePropertyGet("FilterID"))); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "ImageFile", vMSWIAImageFile1); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Left", 0); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Top", 0); vMSWIAImageFile3 = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile3); // fusionne l'image2 dans le support vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "ImageFile", vMSWIAImageFile2); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Left", 0); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Top", vMSWIAImageFile1.OlePropertyGet("Height")); // wiaFormatBMP ="{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"; // wiaFormatPNG ="{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"; // wiaFormatGIF ="{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"; // wiaFormatJPEG ="{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"; // wiaFormatTIFF ="{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"; vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Convert").OlePropertyGet("FilterID"))); vMSWIAImageProcess.OlePropertyGet("Filters", 2).OlePropertyGet("Properties", "FormatID").OlePropertySet("Value", "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"); vMSWIAImageProcess.OlePropertyGet("Filters", 2).OlePropertyGet("Properties", "Quality").OlePropertySet("Value", 90); vMSWIAImageFile3 = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile3); // sauvegarde de la nouvelle image vMSWIAImageFile3.OleFunction("SaveFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\resultat_Fusion_Deux_images.jpg"); |
Pour couper ou rogner une image, il suffit d'utiliser le filtre approprié :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <utilcls.h> // <---------ne pas oublier // couper Image Variant vMSWIAImageProcess, vMSWIAImageFile; // Création conteneur pour l'image à manipuler vMSWIAImageFile = Variant::CreateObject("WIA.ImageFile"); // Création du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // Chargement de l'image dans le conteneur vMSWIAImageFile.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\Grue_Atelier.jpg"); // Ajoute le filtre pour Couper/Rogner l'image (Crop) vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Crop").OlePropertyGet("FilterID"))); // La coupe sera effectuée à l'intérieur du cadre défini ci-dessous: // ********** // definit la position à partir du bord gauche pour la coupe vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Left", 0); // definit la position à partir du bord supérieur pour la coupe vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Top", 0); // definit la position à partir du bord droit pour la coupe vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Right", (vMSWIAImageFile.OlePropertyGet("Width") / 3)); // definit la position à partir du bord inférieur pour la coupe vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Bottom", (vMSWIAImageFile.OlePropertyGet("Height") / 3)); // application du filtre vMSWIAImageFile = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile); // Sauvegarde de la nouvelle image vMSWIAImageFile.OleFunction("SaveFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\sauvegarde_Image_Coupee.JPG"); |
Pour créer une image multipages, il faut tout d'abord charger les différentes images utilisées pour l'image finale, puis il faut utiliser le filtre approprié :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <utilcls.h> // <---------ne pas oublier // création Image Multipage TIFF Variant vMSWIAImageFile1, vMSWIAImageFile2, vMSWIAImageFile3, vMSWIAImageProcess; // Création des conteneurs pour les images à manipuler vMSWIAImageFile1 = Variant::CreateObject("WIA.ImageFile"); vMSWIAImageFile2 = Variant::CreateObject("WIA.ImageFile"); vMSWIAImageFile3 = Variant::CreateObject("WIA.ImageFile"); // Création du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // chargement des images vMSWIAImageFile1.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\Grue_Atelier.jpg"); vMSWIAImageFile2.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\resultat_Fusion_Deux_images.JPG"); vMSWIAImageFile3.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\fourmiz_ImageCombinee.JPG"); // Ajoute un filtre pour gérer un premier Frame/Multipage vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Frame").OlePropertyGet("FilterID"))); // définit le contenu du Frame vMSWIAImageProcess.OlePropertyGet("Filters", (vMSWIAImageProcess.OlePropertyGet("Filters").OlePropertyGet("Count"))).OlePropertySet("Properties", "ImageFile", vMSWIAImageFile2); // Ajoute un filtre pour gérer un deuxieme Frame/Multipage vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Frame").OlePropertyGet("FilterID"))); // définit le contenu du Frame vMSWIAImageProcess.OlePropertyGet("Filters", (vMSWIAImageProcess.OlePropertyGet("Filters").OlePropertyGet("Count"))).OlePropertySet("Properties", "ImageFile", vMSWIAImageFile3); // Ajoute un filtre de conversion pour la nouvelle image (au format TIFF) // (TIFF est le seul format qui supporte la sauvegarde en multi-frames) vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Convert").OlePropertyGet("FilterID"))); // wiaFormatTIFF ="{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}" vMSWIAImageProcess.OlePropertyGet("Filters", (vMSWIAImageProcess.OlePropertyGet("Filters").OlePropertyGet("Count"))).OlePropertySet("Properties", "FormatID", "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"); // Application du filtre à la 1ere image: // (ajoute 2 frames dans la 1ere image, au format Tiff vMSWIAImageFile1 = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile1); // sauvegarde de la nouvelle image vMSWIAImageFile1.OleFunction("SaveFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\monImageMultipage.tif"); |
Pour savoir si l'image GIF chargé est animé, il suffit de tester la propriété IsAnimated de cette image :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <utilcls.h> // <---------ne pas oublier // contrôle Format Image GIF Variant vMSWIAImageFile; // Création conteneur pour l'image à manipuler vMSWIAImageFile = Variant::CreateObject("WIA.ImageFile"); // chargement de l'image vMSWIAImageFile.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\YourBmpHere1.gif"); if(vMSWIAImageFile.OlePropertyGet("IsAnimated")) { ShowMessage("Gif animé"); } else { ShowMessage("Gif standard"); } |
Pour modifier les TAG d'une image il suffit de procéder de la manière suivante :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <utilcls.h> // <---------ne pas oublier // Titre, Commentaire, Auteur, Mots clés // création TAG TITRE copie Image Variant vMSWIAVector, vMSWIAImageProcess, vMSWIAImageFile; // Création conteneur pour l'image à manipuler vMSWIAImageFile = Variant::CreateObject("WIA.ImageFile"); // creation du gestionnaire de filtre vMSWIAImageProcess = Variant::CreateObject("WIA.ImageProcess"); // création d'un vecteur // (Un vecteur permet de créer une collection pour des valeurs du même type.) vMSWIAVector = Variant::CreateObject("WIA.Vector"); // chargement de l'image vMSWIAImageFile.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\Grue_Atelier.jpg"); // définit le filtre pour gérer l'EXIF vMSWIAImageProcess.OlePropertyGet("Filters").OleProcedure("Add", (vMSWIAImageProcess.OlePropertyGet("FilterInfos", "Exif").OlePropertyGet("FilterID"))); vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "ID", 40091); // 40091 Titre // 40092 Commentaire // 40093 Auteur // 40094 Mots clés // spécifie le type de valeur pour le propriété du filtre: // constante VectorOfBytesImagePropertyType = 1101 (la valeur est un vecteur) vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Type", 1101); // voir le fichier d'aide fourni avec la librairie WIA pour // obtenir la liste des constantes disponibles // stocke une chaîne de caractères dans le vecteur vMSWIAVector.OleProcedure("SetFromString", "Test de TAG 'TITRE' : utilisation de WIA v2.0"); // applique au filtre le contenu du vecteur vMSWIAImageProcess.OlePropertyGet("Filters", 1).OlePropertySet("Properties", "Value", vMSWIAVector); // application du filtre dans l'image vMSWIAImageFile = vMSWIAImageProcess.OleFunction("Apply", vMSWIAImageFile); // sauvegarde de l'image vMSWIAImageFile.OleFunction("SaveFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\fourmiz_Test_EXIF.JPG"); |
Pour lister les propriétés d'une image il suffit de procéder de la manière suivante, ici on les charge dans un TMemo :
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <utilcls.h> // <---------ne pas oublier // lister les proprietés d'une image Variant vMSWIAImageFile; String S; // Création conteneur pour l'image à manipuler vMSWIAImageFile = Variant::CreateObject("WIA.ImageFile"); // Chargement de l'image dans le conteneur vMSWIAImageFile.OleFunction("LoadFile", "C:\\Documents and Settings\\toto\\Mes documents\\Mes images\\monImageMultipage.tif"); // Boucle sur la collection de propriétés for(int nb = 1; nb <= vMSWIAImageFile.OlePropertyGet("Properties").OlePropertyGet("Count"); nb++) { S = vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Name"); S = S + " ("; S = S + vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("PropertyID"); S = S + ") ="; if(vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("IsVector")) { S = S + " - vector data not emitted - "; } // RationalImagePropertyType = 1006 else if(vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Type") == 1006) { S = S + (vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Value").OlePropertyGet("Numerator")); S = S + "/"; S = S + (vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Value").OlePropertyGet("Denominator")); } else if(vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Type") == 1002) { S =S + """" + (vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Value")) + """"; } else S = S + (vMSWIAImageFile.OlePropertyGet("Properties", nb).OlePropertyGet("Value")); Memo1->Lines->Add(S); } |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.