creaImageIO_lib
creaImageIOSimpleView.cpp
Go to the documentation of this file.
1 /*
2 # ---------------------------------------------------------------------
3 #
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # pour la Santé)
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
7 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
8 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 #
10 # This software is governed by the CeCILL-B license under French law and
11 # abiding by the rules of distribution of free software. You can use,
12 # modify and/ or redistribute the software under the terms of the CeCILL-B
13 # license as circulated by CEA, CNRS and INRIA at the following URL
14 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
15 # or in the file LICENSE.txt.
16 #
17 # As a counterpart to the access to the source code and rights to copy,
18 # modify and redistribute granted by the license, users are provided only
19 # with a limited warranty and the software's author, the holder of the
20 # economic rights, and the successive licensors have only limited
21 # liability.
22 #
23 # The fact that you are presently reading this means that you have had
24 # knowledge of the CeCILL-B license and that you accept its terms.
25 # ------------------------------------------------------------------------
26 */
27 
28 
29 #include "creaImageIOSimpleView.h"
30 #include "boost/filesystem/operations.hpp"
31 #include "boost/filesystem/fstream.hpp"
32 
33 namespace creaImageIO
34 {
35  bool SimpleView::readFile(std::vector<std::string> i_filenames, std::vector<vtkImageData *> &i_img)
36  {
37  bool bresult, bfinal = true;
38  ImageReader *mReader = new ImageReader();
39  std::vector<std::string>::iterator it = i_filenames.begin();
40  for (; it != i_filenames.end(); it++)
41  {
42  bresult = mReader->CanRead((*it).c_str());
43  if(bresult)
44  {
45  i_img.push_back(mReader->ReadImage((*it).c_str()));
46  } else {
47  printf("ERROR. Impossible to read file %s\n", (*it).c_str() );
48  bfinal = false;
49  } // if
50  } // for
51  delete mReader;
52  return bfinal;
53  }
54 
55 
56  bool SimpleView::readDirectory(const std::string i_pathname, std::vector<vtkImageData *> &i_imgs)
57  {
58  bool bresult = true;
59  ImageReader *mReader = new ImageReader();
60  std::vector<std::string> names;
61  bresult = boost::filesystem::exists( i_pathname );
62  if (bresult)
63  {
64  boost::filesystem::directory_iterator itr(i_pathname);
65  boost::filesystem::directory_iterator end_itr;
66  for(;itr != end_itr; ++itr)
67  {
68  if (!boost::filesystem::is_directory(itr->status()))
69  {
70  if( mReader->CanRead(itr->path().string()) )
71  {
72  names.push_back(itr->path().string());
73  }
74  }
75  }
76  std::sort (names.begin(), names.end()); // make sure names are in lexicographical order
77  int lgr = (int)names.size();
78 
79  for(int i=0; i<lgr; i++)
80  {
81  std::cout << names[i] << std::endl;
82  i_imgs.push_back( mReader->ReadImage(names[i]) );
83  }
84  }
85  return bresult;
86  }
87 }