5 int main(int argc, char* argv[])
14 //gdcmDocument * d; //not used
19 std::cerr << "usage: " << std::endl
20 << argv[0] << " fileName writtingMode "
22 << "(a : ACR, gives fileNamed : DICOM Implicit VR,"
23 << " x : DICOM Explicit VR r : RAW,"
24 << " v : explicit VR + computes the video inv image"
30 if (0) { // Just to keep the code for further use
31 std::cout <<std::endl << "-------- Test gdcmHeader ------" <<std::endl;
32 e1 = new gdcmHeaderHelper(argv[1]);
33 if (!f1->GetHeader()->IsReadable()) {
34 std::cout << "Sorry, not a DICOM / ACR File" <<std::endl;
37 std::cout << std::endl << "----------------------> after new gdcmHeader"
40 std::cout <<std::endl <<"---------------------------------------"
45 std::cout << std::endl
46 << "--------------------- file :" << argv[1]
51 e1 = new gdcmHeader( toto.c_str() );
52 if (!e1->IsReadable())
54 std::cerr << "Sorry, not a Readable DICOM / ACR File" <<std::endl;
59 f1 = new gdcmFile(e1);
62 dataSize = f1->GetImageDataSize();
63 std::cout <<std::endl <<" dataSize " << dataSize << std::endl;
64 int nX,nY,nZ,sPP,planarConfig;
65 std::string pixelType, transferSyntaxName;
69 std::cout << " DIMX=" << nX << " DIMY=" << nY << " DIMZ=" << nZ << std::endl;
71 pixelType = e1->GetPixelType();
72 sPP = e1->GetSamplesPerPixel();
73 planarConfig = e1->GetPlanarConfiguration();
75 std::cout << " pixelType=" << pixelType
76 << " SampleserPixel=" << sPP
77 << " PlanarConfiguration=" << planarConfig
78 << " PhotometricInterpretation="
79 << e1->GetEntryByNumber(0x0028,0x0004)
82 int numberOfScalarComponents=e1->GetNumberOfScalarComponents();
83 std::cout << "NumberOfScalarComponents " << numberOfScalarComponents <<std::endl;
84 transferSyntaxName = e1->GetTransfertSyntaxName();
85 std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
87 if ( transferSyntaxName != "Implicit VR - Little Endian"
88 && transferSyntaxName != "Explicit VR - Little Endian"
89 && transferSyntaxName != "Deflated Explicit VR - Little Endian"
90 && transferSyntaxName != "Explicit VR - Big Endian"
91 && transferSyntaxName != "Uncompressed ACR-NEMA" ) {
92 std::cout << std::endl << "==========================================="
95 std::cout << std::endl << "==========================================="
98 imageData= f1->GetImageData();
100 switch (argv[2][0]) {
102 // ecriture d'un fichier ACR
103 // à partir d'un dcmHeader correct.
105 sprintf(zozo, "%s.ACR", toto.c_str());
106 printf ("WriteACR\n");
111 // ecriture d'un fichier DICOM Implicit VR
112 // à partir d'un dcmHeader correct.
114 sprintf(zozo, "%s.DCM", toto.c_str());
115 printf ("WriteDCM Implicit VR\n");
116 f1->WriteDcmImplVR(zozo);
120 // ecriture d'un fichier DICOM Explicit VR
121 // à partir d'un dcmHeader correct.
123 sprintf(zozo, "%s.XDCM", toto.c_str());
124 std::cout << "WriteDCM Explicit VR" << std::endl;
125 f1->WriteDcmExplVR(zozo);
129 // Ecriture d'un Raw File, a afficher avec
130 // affim filein= dimx= dimy= nbit= signe=
132 sprintf(zozo, "%s.RAW", toto.c_str());
133 std::cout << "WriteRaw" << std::endl;
134 f1->WriteRawData(zozo);
139 if ( f1->GetHeader()->GetBitsStored() == 8)
140 for (int i=0; i<dataSize; i++) {
141 ((char *)imageData)[i] += 127;
144 for (int i=0; i<dataSize/2; i++) {
145 ((unsigned short *)imageData)[i] += 32767;
148 sprintf(zozo, "%s.DCM", toto.c_str());
149 printf ("WriteDCM Implicit VR\n");
150 f1->WriteDcmImplVR(zozo);