1 #include "ImageWriter.h"
2 #include <cpPlugins/Interface/Image.h>
4 #include <itkImageFileWriter.h>
6 // -------------------------------------------------------------------------
7 cpPlugins::IO::ImageWriter::
11 this->_AddInput( "Input", true );
12 this->m_Parameters->ConfigureAsSaveFileName( "FileName" );
13 this->m_Parameters->SetAcceptedFileExtensions(
15 "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
19 // -------------------------------------------------------------------------
20 cpPlugins::IO::ImageWriter::
25 // -------------------------------------------------------------------------
26 std::string cpPlugins::IO::ImageWriter::
29 // Thank you very much Microsoft !!! :-@
30 std::string r = this->_GD0_Image< 2 >( );
31 if( r != "" ) r = this->_GD0_Image< 3 >( );
32 if( r != "" ) r = this->_GD0_Image< 4 >( );
33 if( r != "" ) r = this->_GD0_VectorImage< 2 >( );
34 if( r != "" ) r = this->_GD0_VectorImage< 3 >( );
35 if( r != "" ) r = this->_GD0_VectorImage< 4 >( );
39 // -------------------------------------------------------------------------
40 template< unsigned int D >
41 std::string cpPlugins::IO::ImageWriter::
44 auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input" );
46 return( "ImageWriter: No input image." );
48 itk::DataObject* itk_image = NULL;
50 cpPlugins_Image_Demangle_AllTypes( D, image, itk_image, r, _RealGD );
51 else r = "ImageWriter: Input image type not supported.";
56 // -------------------------------------------------------------------------
57 template< unsigned int D >
58 std::string cpPlugins::IO::ImageWriter::
61 auto image = this->GetInputData< cpPlugins::Interface::Image >( "Input" );
63 return( "ImageWriter: No input image." );
65 itk::DataObject* itk_image = NULL;
67 cpPlugins_VectorImage_Demangle_AllTypes( D, image, itk_image, r, _RealGD );
68 else r = "ImageWriter: Input image type not supported.";
73 // -------------------------------------------------------------------------
75 std::string cpPlugins::IO::ImageWriter::
76 _RealGD( itk::DataObject* image )
79 std::string fname = this->m_Parameters->GetSaveFileName( "FileName" );
81 typedef itk::ImageFileWriter< I > _W;
82 _W* writer = this->_CreateITK< _W >( );
83 writer->SetFileName( fname );
84 writer->SetInput( dynamic_cast< I* >( image ) );
89 catch( itk::ExceptionObject& err )
91 return( "ImageWriter: " + std::string( err.GetDescription( ) ) );