]> Creatis software - cpPlugins.git/blob - plugins/cpPluginsIO/ImageWriter.cxx
...
[cpPlugins.git] / plugins / cpPluginsIO / ImageWriter.cxx
1 #include <cpPluginsIO/ImageWriter.h>
2 #include <cpPlugins/Image.h>
3
4 #include <itkImageFileWriter.h>
5 #include <itkImageFileWriter.hxx>
6 #include <itkImageAlgorithm.hxx>
7
8 // -------------------------------------------------------------------------
9 cpPluginsIO::ImageWriter::
10 ImageWriter( )
11   : Superclass( )
12 {
13   this->_AddInput( "Input" );
14   this->m_Parameters.Clear( );
15   this->m_Parameters.ConfigureAsSaveFileName( "FileName" );
16   this->m_Parameters.SetAcceptedFileExtensions(
17     "FileName",
18     "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
19     );
20 }
21
22 // -------------------------------------------------------------------------
23 cpPluginsIO::ImageWriter::
24 ~ImageWriter( )
25 {
26 }
27
28 // -------------------------------------------------------------------------
29 std::string cpPluginsIO::ImageWriter::
30 _GenerateData( )
31 {
32   auto input = this->GetInputData( "Input" );
33   try
34   {
35     std::string   r = cpPlugin_Image_Demangle_Dim( _GD0, input, 3 );
36     if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 2 );
37     if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 4 );
38     if( r != "" ) r = cpPlugin_Image_Demangle_Dim( _GD0, input, 1 );
39     return( r );
40   }
41   catch( itk::ExceptionObject& err )
42   {
43     return( "IO::ImageWriter: " + std::string( err.GetDescription( ) ) );
44   }
45 }
46
47 // -------------------------------------------------------------------------
48 template< class I >
49 std::string cpPluginsIO::ImageWriter::
50 _GD0( I* image )
51 {
52   static const unsigned int D = I::ImageDimension;
53   if( image == NULL )
54     return( "IO::ImageWriter: Invalid image dimension." );
55
56   std::string   cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD1, image, D );
57   if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllColor( r, _GD1, image, D );
58   return( r );
59 }
60
61 // -------------------------------------------------------------------------
62 template< class I >
63 std::string cpPluginsIO::ImageWriter::
64 _GD1( I* image )
65 {
66   if( image == NULL )
67     return( "IO::ImageWriter: Invalid pixel type." );
68   auto f = this->_CreateITK< itk::ImageFileWriter< I > >( );
69   f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
70   f->SetInput( image );
71   f->Update( );
72   return( "" );
73 }
74
75 // eof - $RCSfile$