Voici comment fusionner verticalement deux images suite a ce tuto et ce post
Le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
}