]> Creatis software - gdcm.git/blob - Testing/TestChangeHeader.cxx
exemple de changement d'entete d'une image avec extraction d'info
[gdcm.git] / Testing / TestChangeHeader.cxx
1 #include <iostream>
2 #include "gdcm.h"
3
4
5         // ecriture d'un fichier DICOM à partir d'un dcmHeader correct.
6         // et des pixels d'une autre image
7         
8         
9 int main(int argc, char* argv[])
10 {  
11         string premier, deuxieme;
12         char resultat[200];
13         
14         gdcmFile  *f1, *f2;
15         //gdcmHeader *e1, *e2;
16         void* imageData;
17         int dataSize;
18                 
19         if (argc < 3) {
20                 printf ("usage :\n testChangeEntete nomFichierPourEntete nomFichierPourDonnées \n");
21                 exit(0);        
22         }
23
24         premier = argv[1];
25         f1 = new gdcmFile(premier);
26         f1->LoadElements();
27         
28         deuxieme = argv[2];
29         f2 = new gdcmFile(deuxieme);
30         f2->LoadElements();
31         printf("apres LoadElements\n");
32         
33         //f1->PrintPubElVal();
34         
35         // On suppose que les champs DICOM du 2ieme fichier existent *effectivement*
36         
37         f1->ReplaceOrCreateByNumber(0x0028, 0x0008, f2->GetPubElValSet().GetElValueByNumber(0x0028, 0x0008));// nb Frames
38         f1->ReplaceOrCreateByNumber(0x0028, 0x0010, f2->GetPubElValSet().GetElValueByNumber(0x0028, 0x0010));// nbLig
39         f1->ReplaceOrCreateByNumber(0x0028, 0x0011, f2->GetPubElValSet().GetElValueByNumber(0x0028, 0x0011));// nbCol
40         
41         // sans doute d'autres à mettre à jour...
42         
43         // TODO : une routine qui recoit une liste de couples (gr,el), et qui fasse le boulot.
44
45                                 
46         dataSize = f2->GetImageDataSize();
47         printf ("dataSize %d\n",dataSize);
48         imageData= f2->GetImageData();
49         
50         f1->SetImageData(imageData,dataSize);
51         
52         // ou, plus joli:
53         //f1->SetImageData(f2->GetImageData(),f2->GetImageDataSize());  
54
55         sprintf(resultat, "%s.vol", deuxieme.c_str());
56         printf ("WriteDCM\n");
57         f1->WriteDcm(resultat);         
58 }
59
60
61