1 /*=========================================================================
4 Module: $RCSfile: bbitkImageReader.cxx,v $
6 Date: $Date: 2008/02/07 07:58:54 $
7 Version: $Revision: 1.2 $
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.
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.
17 =========================================================================*/
24 #include "bbitkImageReader.h"
25 #include "bbitkPackage.h"
26 #include "itkImageFileReader.h"
30 BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageReader,bbtk::AtomicBlackBox);
32 BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageReader);
37 void ImageReader::Read()
39 std::string filename = bbGetInputFilename();
41 itk::ImageIOBase::Pointer genericReader =
42 itk::ImageIOFactory::CreateImageIO(filename.c_str(),
43 itk::ImageIOFactory::ReadMode);
46 bbtkError("File format unknown (while reading \"" << filename << "\")");
48 genericReader->SetFileName(filename.c_str());
49 genericReader->ReadImageInformation();
51 bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions());
53 BBTK_TEMPLATE_ITK_IMAGE_SWITCH( typ, Read);
61 template<class itkImageType>
62 void ImageReader::Read()
64 bbtkDebugMessageInc("Core",9,"itkImageReader<"<<
65 bbtk::TypeName<itkImageType>()
66 <<">::Read()"<<std::endl);
68 typedef itk::ImageFileReader< itkImageType > itkReaderType;
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 )
76 bbtkError("could not read image \""<< filename << "\" : "<<e.what());
79 reader->GetOutput()->Register();
80 bbSetOutputOut( reader->GetOutput() );
82 bbtkDebugDecTab("Core",9);