]> Creatis software - clitk.git/blob - common/clitkIOCommon.txx
Initial revision
[clitk.git] / common / clitkIOCommon.txx
1 #ifndef CLITKIOCOMMON_TXX
2 #define CLITKIOCOMMON_TXX
3
4 /**
5    =================================================
6    * @file   clitkIOCommon.txx
7    * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
8    * @date   04 Jul 2006 08:34:11
9    * 
10    * @brief  
11    * 
12    * 
13    =================================================*/
14
15 //====================================================================
16 // To short the code for reading an image
17 template<typename ImageType>
18 typename ImageType::Pointer readImage(const std::string & filename, const bool verbose) {
19   typedef itk::ImageFileReader<ImageType> ReaderType;
20   typename ReaderType::Pointer reader = ReaderType::New();
21   reader->SetFileName(filename.c_str());
22   if (verbose) {
23     std::cout << "Reading " << filename << " ..." << std::endl;
24   }
25   try {
26     reader->Update(); 
27   }
28   catch( itk::ExceptionObject & err ) {
29     std::cerr << "Error while reading " << filename 
30               << " " << err << std::endl;
31     exit(0);
32   }
33   return reader->GetOutput();
34 }
35 //====================================================================
36
37 //====================================================================
38 // To short the code for reading an image from several files
39 template<typename ImageType>
40 typename ImageType::Pointer readImage(const std::vector<std::string> & filenames, 
41                                       const bool verbose) {
42   if (filenames.size() == 1) return readImage<ImageType>(filenames[0], verbose);
43   typedef itk::ImageSeriesReader<ImageType> ReaderType;
44   typename ReaderType::Pointer reader = ReaderType::New();
45   reader->SetFileNames(filenames);
46   if (verbose) {
47     std::cout << "Reading " << filenames[0] << " and others ..." << std::endl;
48   }
49   try {
50     reader->Update(); 
51   }
52   catch( itk::ExceptionObject & err ) {
53     std::cerr << "Error while reading " << filenames[0]
54               << " or other files ..." << err << std::endl;
55     exit(0);
56   }
57   return reader->GetOutput();
58 }
59 //====================================================================
60
61 //====================================================================
62 // To short the code for writing an image
63 template<typename ImageType>
64 void writeImage(const typename ImageType::Pointer image, 
65                 const std::string & filename,  
66                 const bool verbose) {
67   typedef itk::ImageFileWriter<ImageType> WriterType;
68   typename WriterType::Pointer writer = WriterType::New();
69   writer->SetFileName(filename.c_str());
70   writer->SetInput(image);
71   if (verbose) {
72     std::cout << "Writing " << filename << "." << std::endl;
73   }
74   try { 
75     writer->Update(); 
76   }
77   catch( itk::ExceptionObject & err ) {
78     std::cerr << "Error while writing " << filename 
79               << ", the error is : " << err << std::endl;
80     exit(0);
81   }
82 }
83 //====================================================================
84
85 #endif /* end #define CLITKIOCOMMON_TXX */
86