]> Creatis software - cpPlugins.git/blob - appli/examples/plugins/example_ReadWriteImage.cxx
...
[cpPlugins.git] / appli / examples / plugins / example_ReadWriteImage.cxx
1 #include <iostream>
2 #include <cpPlugins/Interface.h>
3
4 int main( int argc, char* argv[] )
5 {
6   if( argc < 4 )
7   {
8     std::cerr
9       << "Usage: " << argv[ 0 ]
10       << " plugins_library input_image(s) output_image" << std::endl;
11     return( 1 );
12
13   } // fi
14
15   // Load interface
16   int ret = 0;
17   cpPlugins::Interface interface;
18   try
19   {
20     interface.LoadPluginFile( argv[ 1 ] );
21   }
22   catch( std::exception& err )
23   {
24     std::cerr
25       << "Interface load failed on \"" << argv[ 1 ] << "\": "
26       << err.what( )
27       << std::endl;
28     ret = 1;
29
30   } // fi
31
32   // Create filters
33   cpPlugins::ProcessObject::Pointer reader;
34   cpPlugins::ProcessObject::Pointer writer;
35   try
36   {
37     reader = interface.Create( "IO", "ImageReader" );
38     if( reader.IsNull( ) )
39     {
40       std::cerr
41         << "\"IO::ImageReader\" creation failed from \""
42         << argv[ 1 ] << "\""
43         << std::endl;
44       ret = 1;
45
46     } // fi
47     writer = interface.Create( "IO", "ImageWriter" );
48     if( writer.IsNull( ) )
49     {
50       std::cerr
51         << "\"IO::ImageWriter\" creation failed from \""
52         << argv[ 1 ] << "\""
53         << std::endl;
54       ret = 1;
55
56     } // fi
57   }
58   catch( std::exception& err )
59   {
60     std::cerr
61       << "Filter creation failed on \"" << argv[ 1 ] << "\": "
62       << err.what( )
63       << std::endl;
64     ret = 1;
65
66   } // yrt
67
68   if( ret == 0 )
69   {
70     // Configure filters
71     auto reader_params = reader->GetParameters( );
72     for( int i = 2; i < argc - 1; ++i )
73       reader_params->AddToOpenFileNameList( "FileNames", argv[ i ] );
74     auto writer_params = writer->GetParameters( );
75     writer_params->SetSaveFileName( "FileName", argv[ argc - 1 ] );
76
77     // Connect filters
78     writer->SetInput( "Input", reader->GetOutput( "Output" ) );
79
80     // Execute filters
81     try
82     {
83       writer->Update( );
84     }
85     catch( itk::ExceptionObject& err )
86     {
87       std::cout << "Error caught: " << err << std::endl;
88       ret = 1;
89
90     } // fi
91
92   } // fi
93
94   // Ok finish
95   return( ret );
96 }
97
98 // eof - $RCSfile$