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 72 73 74
|
// #include <utilcls.h> // <---------ne pas oublier
void __fastcall TForm1::Button8Click(TObject *Sender)
{
// 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 1ere image dans le conteneur
// (l'image qui sera placée au dessus)
vMSWIAImageFile1.OleFunction("LoadFile", "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\Grue_Atelier.jpg");
// Chargement de la 2eme image dans le conteneur
// (l'image qui sera placée dessous)
vMSWIAImageFile2.OleFunction("LoadFile", "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\Photo\\Photo.jpg");
// ------ceation d'un support pour fusionner les 2 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\\blondelle\\Mes documents\\Mes images\\resultat_Fusion_Deux_images.jpg");
} |
Partager