]> Creatis software - gdcm.git/blob - Example/TestWrite.cxx
* src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
[gdcm.git] / Example / TestWrite.cxx
1 #include <iostream>
2 #include <stdio.h>
3 #include "gdcm.h"
4
5 int main(int argc, char* argv[])
6 {  
7    std::string toto;
8    char zozo[200];
9
10
11    gdcmHeader* e1;
12    gdcmFile  * f1;
13
14    //gdcmDocument * d;  //not used
15    void* imageData;
16    int dataSize;
17
18    if (argc < 3) {
19          std::cerr << "usage: " << std::endl 
20                    << argv[0] << " fileName writtingMode "
21                 << std::endl 
22                    << "(a : ACR, d : DICOM Implicit VR,"
23                    << " x : DICOM Explicit VR  r : RAW)"
24                 << std::endl;
25          return 0;
26    }
27 /*
28    if (0) {  // Just to keep the code for further use
29       std::cout <<std::endl << "-------- Test gdcmHeader ------" <<std::endl;
30       e1 = new gdcmHeaderHelper(argv[1]);
31       if (!f1->GetHeader()->IsReadable()) {
32          std::cout << "Sorry, not a DICOM / ACR File"  <<std::endl;
33          exit(0);
34       }
35       std::cout << std::endl << "----------------------> after new gdcmHeader"
36                 << std::endl;
37       e1->PrintEntry();
38       std::cout <<std::endl <<"---------------------------------------" 
39                 <<std::endl;
40    }
41 */
42
43    std::cout << std::endl
44              << "--------------------- file :" << argv[1] 
45              << std::endl;
46      
47    toto = argv[1]; 
48
49    e1 = new gdcmHeader( toto.c_str(), false );
50    if (!e1->IsReadable())
51    {
52        std::cerr << "Sorry, not a Readable DICOM / ACR File"  <<std::endl;
53        return 0;
54    }
55   // e1->Print(); 
56    
57    f1 = new gdcmFile(e1);
58 // ---     
59
60    dataSize = f1->GetImageDataSize();
61    std::cout <<std::endl <<" dataSize " << dataSize << std::endl;
62    int nX,nY,nZ,sPP,planarConfig;
63    std::string pixelType, transferSyntaxName;
64    nX=e1->GetXSize();
65    nY=e1->GetYSize();
66    nZ=e1->GetZSize();
67    std::cout << " DIMX=" << nX << " DIMY=" << nY << " DIMZ=" << nZ << std::endl;
68
69    pixelType    = e1->GetPixelType();
70    sPP          = e1->GetSamplesPerPixel();
71    planarConfig = e1->GetPlanarConfiguration();
72    
73    std::cout << " pixelType="           << pixelType 
74              << " SampleserPixel="      << sPP
75              << " PlanarConfiguration=" << planarConfig 
76              << " PhotometricInterpretation=" 
77                                 << e1->GetEntryByNumber(0x0028,0x0004) 
78              << std::endl;
79
80    int numberOfScalarComponents=e1->GetNumberOfScalarComponents();
81    std::cout << "NumberOfScalarComponents " << numberOfScalarComponents <<std::endl;
82    transferSyntaxName = e1->GetTransfertSyntaxName();
83    std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
84    
85    if (  transferSyntaxName != "Implicit VR - Little Endian"
86       && transferSyntaxName != "Explicit VR - Little Endian"     
87       && transferSyntaxName != "Deflated Explicit VR - Little Endian"      
88       && transferSyntaxName != "Explicit VR - Big Endian"
89       && transferSyntaxName != "Uncompressed ACR-NEMA"     ) {
90       std::cout << std::endl << "==========================================="
91                 << std::endl; 
92       f1->ParsePixelData();
93       std::cout << std::endl << "==========================================="
94                 << std::endl; 
95    }
96    imageData= f1->GetImageData();
97
98    switch (argv[2][0]) {
99    case 'a' :
100             // ecriture d'un fichier ACR 
101             // à partir d'un dcmHeader correct.
102
103       sprintf(zozo, "%s.ACR", toto.c_str());
104       printf ("WriteACR\n");
105       f1->WriteAcr(zozo);
106       break;
107
108    case 'd' :
109            // ecriture d'un fichier DICOM Implicit VR 
110            // à partir d'un dcmHeader correct.
111
112       sprintf(zozo, "%s.DCM", toto.c_str());
113       printf ("WriteDCM Implicit VR\n");
114       f1->WriteDcmImplVR(zozo);
115       break;
116
117    case 'x' :
118               // ecriture d'un fichier DICOM Explicit VR 
119               // à partir d'un dcmHeader correct.
120
121       sprintf(zozo, "%s.XDCM", toto.c_str());
122       std::cout << "WriteDCM Explicit VR" << std::endl;
123       f1->WriteDcmExplVR(zozo);
124       break;
125
126    case 'r' :
127              //  Ecriture d'un Raw File, a afficher avec 
128              // affim filein= dimx= dimy= nbit= signe=
129
130       sprintf(zozo, "%s.RAW", toto.c_str());
131       std::cout << "WriteRaw" << std::endl;
132       f1->WriteRawData(zozo);
133       break;
134
135    }
136   return 0;
137 }
138