]> Creatis software - gdcm.git/blob - Testing/TestChangeHeader.cxx
ENH: minor tweaks
[gdcm.git] / Testing / TestChangeHeader.cxx
1 #include "gdcmHeader.h"
2 #include "gdcmFile.h"
3 #include <string>
4
5
6 // ecriture d'un fichier DICOM à partir d'un dcmHeader correct.
7 // et des pixels d'une autre image
8
9
10 int TestChangeHeader(int argc, char* argv[])
11 {
12    if (argc < 3)
13    {
14       std::cerr << "usage :" << std::endl << 
15       argv[0] << " nomFichierPourEntete nomFichierPourDonnées" << std::endl;
16       return 1;
17    }
18
19    std::string premier = argv[1];
20    gdcmFile  *f1 = new gdcmFile(premier);
21
22    std::string deuxieme = argv[2];
23    gdcmFile  *f2 = new gdcmFile(deuxieme);
24
25    //f1->PrintPubElVal();
26
27    // On suppose que les champs DICOM du 2ieme fichier existent *effectivement*
28
29    std::string nbFrames = f2->GetHeader()->GetEntryByNumber(0x0028, 0x0008);
30    if(nbFrames != "gdcm::Unfound")
31    {
32       f1->GetHeader()->ReplaceOrCreateByNumber( nbFrames, 0x0028, 0x0008);
33    }
34          
35    f1->GetHeader()->ReplaceOrCreateByNumber(
36       f2->GetHeader()->GetEntryByNumber(0x0028, 0x0010), 0x0028, 0x0010);// nbLig
37    f1->GetHeader()->ReplaceOrCreateByNumber( 
38       f2->GetHeader()->GetEntryByNumber(0x0028, 0x0011), 0x0028, 0x0011);// nbCol
39
40
41 // sans doute d'autres à mettre à jour...
42
43 // TODO : rajouter une valeur par defaut.
44 // TODO : une routine qui recoit une liste de couples (gr,el), 
45 //                        et qui fasse le boulot.
46
47
48    int dataSize = f2->GetImageDataSize();
49    printf ("dataSize %d\n",dataSize);
50    void* imageData= f2->GetImageData();
51
52 // TODO : ne devrait-on pas fusionner ces 2 fonctions ?
53    f1->SetImageData(imageData,dataSize);
54    f1->GetHeader()->SetImageDataSize(dataSize);
55
56    f1->GetHeader()->Print();
57
58    std::string s0 =f2->GetHeader()->GetEntryByNumber(0x7fe0, 0x0000);
59    std::string s10=f2->GetHeader()->GetEntryByNumber(0x7fe0, 0x0010);
60    printf("lgr 7fe0, 0000 %s\n",s0.c_str());
61    printf("lgr 7fe0, 0010 %s\n",s10.c_str());
62
63    char resultat[512];
64
65    sprintf(resultat, "%s.vol", deuxieme.c_str());
66    printf ("WriteDCM\n");
67   //f1->WriteDcmExplVR("itk-gdcm-ex.dcm");
68   //f1->WriteDcmImplVR(resultat);
69    f1->WriteAcr(resultat);
70
71    return 0;
72 }