]> Creatis software - clitk.git/blobdiff - tools/clitkDicom2Image.cxx
dicom structure in cmd line
[clitk.git] / tools / clitkDicom2Image.cxx
index 421d456b945ab4b990b0f79c556828048f73d363..b13de42b419c04fef3d4475ca6c6ae8319688b4a 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 
 // clitk includes
 #include "clitkDicom2Image_ggo.h"
 #include "clitkImageCommon.h"
 #include "vvImageReader.h"
 #include "vvImageWriter.h"
+#include <gdcmFile.h>
+#if GDCM_MAJOR_VERSION == 2
+  #include <gdcmImageHelper.h>
+  #include <gdcmAttribute.h>
+  #include <gdcmReader.h>
+#endif
 
 //====================================================================
 int main(int argc, char * argv[])
@@ -48,13 +54,33 @@ int main(int argc, char * argv[])
   std::vector<double> sliceLocations;
   for(unsigned int i=0; i<args_info.inputs_num; i++) {
     //std::cout << "Reading <" << input_files[i] << std::endl;
-    gdcm::File * header = clitk::readDicomHeader(input_files[i]);
-    sliceLocations.push_back(header->GetZOrigin());
-    if (header->GetPixelSize() != 2) {
+#if GDCM_MAJOR_VERSION == 2
+    gdcm::Reader hreader;
+    hreader.SetFileName(input_files[i].c_str());
+    hreader.Read();
+    std::vector<double> theorigin = gdcm::ImageHelper::GetOriginValue(hreader.GetFile());
+    sliceLocations.push_back(theorigin[2]);
+    gdcm::Attribute<0x28, 0x100> pixel_size;
+    gdcm::DataSet& ds = hreader.GetFile().GetDataSet();
+    pixel_size.SetFromDataSet(ds);
+    if (pixel_size.GetValue() != 16)
+    {
       std::cerr << "Pixel type 2 bytes ! " << std::endl;
       std::cerr << "In file " << input_files[i] << std::endl;
       exit(0);
     }
+#else
+  gdcm::File *header = new gdcm::File();
+  header->SetFileName(input_files[i]);
+  header->SetMaxSizeLoadEntry(16384); // required ?
+  header->Load();
+  sliceLocations.push_back(header->GetZOrigin());
+  if (header->GetPixelSize() != 2) {
+    std::cerr << "Pixel type 2 bytes ! " << std::endl;
+    std::cerr << "In file " << input_files[i] << std::endl;
+    exit(0);
+  }
+#endif
   }
 
   //===========================================