]> Creatis software - clitk.git/blob - common/old/clitkIOCommon.txx
added the new headers
[clitk.git] / common / old / clitkIOCommon.txx
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
18 #ifndef CLITKIOCOMMON_TXX
19 #define CLITKIOCOMMON_TXX
20 /**
21    =================================================
22    * @file   clitkIOCommon.txx
23    * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
24    * @date   04 Jul 2006 08:34:11
25    * 
26    * @brief  
27    * 
28    * 
29    =================================================*/
30
31 //====================================================================
32 // To short the code for reading an image
33 template<typename ImageType>
34 typename ImageType::Pointer readImage(const std::string & filename, const bool verbose) {
35   typedef itk::ImageFileReader<ImageType> ReaderType;
36   typename ReaderType::Pointer reader = ReaderType::New();
37   reader->SetFileName(filename.c_str());
38   if (verbose) {
39     std::cout << "Reading " << filename << " ..." << std::endl;
40   }
41   try {
42     reader->Update(); 
43   }
44   catch( itk::ExceptionObject & err ) {
45     std::cerr << "Error while reading " << filename 
46               << " " << err << std::endl;
47     exit(0);
48   }
49   return reader->GetOutput();
50 }
51 //====================================================================
52
53 //====================================================================
54 // To short the code for reading an image from several files
55 template<typename ImageType>
56 typename ImageType::Pointer readImage(const std::vector<std::string> & filenames, 
57                                       const bool verbose) {
58   if (filenames.size() == 1) return readImage<ImageType>(filenames[0], verbose);
59   typedef itk::ImageSeriesReader<ImageType> ReaderType;
60   typename ReaderType::Pointer reader = ReaderType::New();
61   reader->SetFileNames(filenames);
62   if (verbose) {
63     std::cout << "Reading " << filenames[0] << " and others ..." << std::endl;
64   }
65   try {
66     reader->Update(); 
67   }
68   catch( itk::ExceptionObject & err ) {
69     std::cerr << "Error while reading " << filenames[0]
70               << " or other files ..." << err << std::endl;
71     exit(0);
72   }
73   return reader->GetOutput();
74 }
75 //====================================================================
76
77 //====================================================================
78 // To short the code for writing an image
79 template<typename ImageType>
80 void writeImage(const typename ImageType::Pointer image, 
81                 const std::string & filename,  
82                 const bool verbose) {
83   typedef itk::ImageFileWriter<ImageType> WriterType;
84   typename WriterType::Pointer writer = WriterType::New();
85   writer->SetFileName(filename.c_str());
86   writer->SetInput(image);
87   if (verbose) {
88     std::cout << "Writing " << filename << "." << std::endl;
89   }
90   try { 
91     writer->Update(); 
92   }
93   catch( itk::ExceptionObject & err ) {
94     std::cerr << "Error while writing " << filename 
95               << ", the error is : " << err << std::endl;
96     exit(0);
97   }
98 }
99 //====================================================================
100
101 #endif /* end #define CLITKIOCOMMON_TXX */
102