]> Creatis software - bbtk.git/blob - packages/itk/src/bbitkImageReader.cxx
=== MAJOR RELEASE ====
[bbtk.git] / packages / itk / src / bbitkImageReader.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbitkImageReader.cxx,v $
5   Language:  C++
6   Date:      $Date: 2008/04/18 12:59:50 $
7   Version:   $Revision: 1.3 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*/
18 /**
19  *  \file 
20  *  \brief 
21  */
22 #ifdef _USE_ITK_
23
24 #include "bbitkImageReader.h"
25 #include "bbitkPackage.h"
26 #include "itkImageFileReader.h"
27
28 namespace bbitk 
29 {
30   BBTK_BLACK_BOX_IMPLEMENTATION(ImageReader,bbtk::AtomicBlackBox);
31   
32   BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageReader);
33
34
35
36
37   void ImageReader::Read()
38   {
39     std::string filename = bbGetInputFilename();
40
41     itk::ImageIOBase::Pointer genericReader = 
42       itk::ImageIOFactory::CreateImageIO(filename.c_str(), 
43                                          itk::ImageIOFactory::ReadMode);
44     if (!genericReader)
45       {
46         bbtkError("File format unknown (while reading \"" << filename << "\")");
47       }
48     genericReader->SetFileName(filename.c_str());
49     genericReader->ReadImageInformation();  
50     
51     bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions());
52
53     BBTK_TEMPLATE_ITK_IMAGE_SWITCH( typ, Read);
54   }
55
56
57
58   /** 
59       Template Processing 
60   */
61   template<class itkImageType>
62   void ImageReader::Read()
63   {
64     bbtkDebugMessageInc("Core",9,"itkImageReader<"<<
65                         bbtk::TypeName<itkImageType>()
66                         <<">::Read()"<<std::endl);
67
68     typedef itk::ImageFileReader< itkImageType > itkReaderType;
69
70     typename itkReaderType::Pointer reader = itkReaderType::New();
71     std::string filename = bbGetInputFilename();
72     reader->SetFileName(filename.c_str());
73     try { reader->Update(); }
74     catch( std::exception& e ) 
75       {
76         bbtkError("could not read image \""<< filename << "\" : "<<e.what());
77       }
78
79     reader->GetOutput()->Register();
80     bbSetOutputOut( reader->GetOutput() );
81
82     bbtkDebugDecTab("Core",9);
83   }
84
85
86
87
88
89
90 }
91 // eo namespace bbtk
92
93 #endif