X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2FcpPluginsIO%2FImageWriter.cxx;fp=plugins%2FcpPluginsIO%2FImageWriter.cxx;h=4418c66aff1d03cfe8cc11103c26f9a4549abbfe;hb=1b0022070ff3b5f80f6f8c8b87f73032f5685eaf;hp=0000000000000000000000000000000000000000;hpb=98390bcac544f7f3a6762ce812dda491213d6f13;p=cpPlugins.git diff --git a/plugins/cpPluginsIO/ImageWriter.cxx b/plugins/cpPluginsIO/ImageWriter.cxx new file mode 100644 index 0000000..4418c66 --- /dev/null +++ b/plugins/cpPluginsIO/ImageWriter.cxx @@ -0,0 +1,75 @@ +#include +#include + +#include +#include +#include + +// ------------------------------------------------------------------------- +cpPluginsIO::ImageWriter:: +ImageWriter( ) + : Superclass( ) +{ + this->_AddInput( "Input" ); + this->m_Parameters.Clear( ); + this->m_Parameters.ConfigureAsSaveFileName( "FileName" ); + this->m_Parameters.SetAcceptedFileExtensions( + "FileName", + "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)" + ); +} + +// ------------------------------------------------------------------------- +cpPluginsIO::ImageWriter:: +~ImageWriter( ) +{ +} + +// ------------------------------------------------------------------------- +std::string cpPluginsIO::ImageWriter:: +_GenerateData( ) +{ + auto input = this->GetInputData( "Input" ); + try + { + std::string r = cpPlugin_Image_Demangle_Dim( _GD0, input, 3 ); + if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 2 ); + if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 4 ); + if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 1 ); + return( r ); + } + catch( itk::ExceptionObject& err ) + { + return( "IO::ImageWriter: " + std::string( err.GetDescription( ) ) ); + } +} + +// ------------------------------------------------------------------------- +template< class I > +std::string cpPluginsIO::ImageWriter:: +_GD0( I* image ) +{ + static const unsigned int D = I::ImageDimension; + if( image == NULL ) + return( "IO::ImageWriter: Invalid image dimension." ); + + std::string cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD1, image, D ); + if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllColor( r, _GD1, image, D ); + return( r ); +} + +// ------------------------------------------------------------------------- +template< class I > +std::string cpPluginsIO::ImageWriter:: +_GD1( I* image ) +{ + if( image == NULL ) + return( "IO::ImageWriter: Invalid pixel type." ); + auto f = this->_CreateITK< itk::ImageFileWriter< I > >( ); + f->SetFileName( this->m_Parameters.GetOpenFileName( "FileName" ) ); + f->SetInput( image ); + f->Update( ); + return( "" ); +} + +// eof - $RCSfile$