]> Creatis software - cpPlugins.git/blob - plugins/cpPluginsIO/ImageWriter.cxx
1855f2e989a01bedd260b9f68dbe2a1d4507744d
[cpPlugins.git] / plugins / cpPluginsIO / ImageWriter.cxx
1 #include <cpPluginsIO/ImageWriter.h>
2 #include <cpPlugins/Image.h>
3 #include <cpPlugins_Instances/ImagesIO.h>
4
5 // -------------------------------------------------------------------------
6 cpPluginsIO::ImageWriter::
7 ImageWriter( )
8   : Superclass( )
9 {
10   this->_AddInput( "Input" );
11   this->m_Parameters.Clear( );
12   this->m_Parameters.ConfigureAsSaveFileName( "FileName" );
13   this->m_Parameters.SetAcceptedFileExtensions(
14     "FileName",
15     "Image files (*.bmp *.png *.jpg *.jpeg *.dcm *.mhd *.nhdr *.nrrd *.tiff)"
16     );
17 }
18
19 // -------------------------------------------------------------------------
20 cpPluginsIO::ImageWriter::
21 ~ImageWriter( )
22 {
23 }
24
25 // -------------------------------------------------------------------------
26 void cpPluginsIO::ImageWriter::
27 _GenerateData( )
28 {
29   auto image = this->GetInputData( "Input" )->GetITK< itk::DataObject >( );
30   cpPlugins_Image_Demangle_Dim     ( _GD0, image, 2 );
31   else cpPlugins_Image_Demangle_Dim( _GD0, image, 3 );
32   else this->_Error( "No valid input image dimension" );
33 }
34
35 // -------------------------------------------------------------------------
36 template< class _TImage >
37 void cpPluginsIO::ImageWriter::
38 _GD0( _TImage* image )
39 {
40   static const unsigned int D = _TImage::ImageDimension;
41   cpPlugins_Image_Demangle_Pixel_AllScalars          ( _GD1, image, D );
42   else cpPlugins_Image_Demangle_ColorPixel_AllScalars( _GD1, image, RGB, D );
43   else cpPlugins_Image_Demangle_ColorPixel_AllScalars( _GD1, image, RGBA, D );
44 }
45
46 // -------------------------------------------------------------------------
47 template< class _TImage >
48 void cpPluginsIO::ImageWriter::
49 _GD1( _TImage* image )
50 {
51   typedef itk::ImageFileWriter< _TImage > _TFilter;
52   auto f = this->_CreateITK< _TFilter >( );
53   f->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
54   f->SetInput( image );
55   try
56   {
57     f->Update( );
58   }
59   catch( itk::ExceptionObject& err )
60   {
61     this->_Error( err.GetDescription( ) );
62
63   } // yrt
64 }
65
66 // eof - $RCSfile$