diff --git a/Modules/Wrappers/ApplicationEngine/test/CMakeLists.txt b/Modules/Wrappers/ApplicationEngine/test/CMakeLists.txt
index 860c8673636aff84ee7d5ae5f26c9c5ab0bc733d..2018d29e92c7716215adc8274f9303dca5287e1f 100644
--- a/Modules/Wrappers/ApplicationEngine/test/CMakeLists.txt
+++ b/Modules/Wrappers/ApplicationEngine/test/CMakeLists.txt
@@ -171,6 +171,12 @@ otb_add_test(NAME owTvOutputImageParameter COMMAND otbApplicationEngineTestDrive
   "my description"
   )
 
+otb_add_test(NAME owTvOutputImageParameterConversion COMMAND otbApplicationEngineTestDriver
+  otbWrapperOutputImageParameterConversionTest
+  ${INPUTDATA}/poupees.tif
+  ${TEMP}/poupees_out.tif
+  )
+
 otb_add_test(NAME owTvDocExampleStructureTest COMMAND otbApplicationEngineTestDriver
   --compare-ascii ${NOTOL}
   ${BASELINE}/owTuDocExampleStructureTest.txt
diff --git a/Modules/Wrappers/ApplicationEngine/test/otbApplicationEngineTestDriver.cxx b/Modules/Wrappers/ApplicationEngine/test/otbApplicationEngineTestDriver.cxx
index f5b3aabf3d5b4642044293927422883c491198f1..17a6d631ba03d9d78c25383da7bf06a450be9884 100644
--- a/Modules/Wrappers/ApplicationEngine/test/otbApplicationEngineTestDriver.cxx
+++ b/Modules/Wrappers/ApplicationEngine/test/otbApplicationEngineTestDriver.cxx
@@ -51,5 +51,6 @@ void RegisterTests()
   REGISTER_TEST(otbWrapperInputVectorDataParameterNew);
   REGISTER_TEST(otbWrapperOutputImageParameterNew);
   REGISTER_TEST(otbWrapperOutputImageParameterTest1);
+  REGISTER_TEST(otbWrapperOutputImageParameterConversionTest);
   REGISTER_TEST(otbApplicationMemoryConnectTest);
 }
diff --git a/Modules/Wrappers/ApplicationEngine/test/otbWrapperOutputImageParameterTest.cxx b/Modules/Wrappers/ApplicationEngine/test/otbWrapperOutputImageParameterTest.cxx
index 76d6c6056e6ba55ed46f3edda89923fc1ad0c861..34cbb1d6f1dff0fd3b6c559cd201210792d6dfdc 100644
--- a/Modules/Wrappers/ApplicationEngine/test/otbWrapperOutputImageParameterTest.cxx
+++ b/Modules/Wrappers/ApplicationEngine/test/otbWrapperOutputImageParameterTest.cxx
@@ -23,8 +23,10 @@
 #endif
 
 #include "otbWrapperOutputImageParameter.h"
+#include "otbWrapperInputImageParameter.h"
 #include "otbImageFileReader.h"
 #include "otbWrapperTypes.h"
+#include <vector>
 
 int otbWrapperOutputImageParameterNew(int itkNotUsed(argc), char * itkNotUsed(argv)[])
 {
@@ -34,7 +36,6 @@ int otbWrapperOutputImageParameterNew(int itkNotUsed(argc), char * itkNotUsed(ar
   return EXIT_SUCCESS;
 }
 
-
 int otbWrapperOutputImageParameterTest1(int itkNotUsed(argc), char* argv[])
 {
   typedef otb::Wrapper::OutputImageParameter OutputImageParameterType;
@@ -59,3 +60,59 @@ int otbWrapperOutputImageParameterTest1(int itkNotUsed(argc), char* argv[])
 
   return EXIT_SUCCESS;
 }
+
+
+template < typename ImageType >
+void Cross( int p , std::string inputfilename, std::string outputfilename)
+{
+  otb::Wrapper::InputImageParameter::Pointer paramIn (
+    otb::Wrapper::InputImageParameter::New() );
+  paramIn->SetFromFileName( inputfilename ); 
+  otb::Wrapper::OutputImageParameter::Pointer paramOut( 
+    otb::Wrapper::OutputImageParameter::New() ); 
+  paramOut->SetFileName( outputfilename );
+  paramOut->SetImage(paramIn->GetImage<ImageType>());
+  paramOut->InitializeWriters();
+  paramOut->SetPixelType(static_cast<otb::Wrapper::ImagePixelType>(p));
+  paramOut->Write();
+}
+
+
+int otbWrapperOutputImageParameterConversionTest(int , char* argv[])
+{
+  std::string filenamein = argv[1];
+  std::string filenameout = argv[2] ;
+  std::string extension = filenameout.substr( filenameout.find_last_of('.') );
+
+  filenameout = filenameout.substr( 0 , filenameout.find_last_of('.') );
+
+  for ( int i = otb::Wrapper::ImagePixelType_uint8 ; i < 11 ; i++ )
+    {
+      std::string type = 
+      otb::Wrapper::OutputImageParameter::ConvertPixelTypeToString(
+        static_cast<otb::Wrapper::ImagePixelType>(i) );
+      Cross< otb::Wrapper::UInt8ImageType > (i , filenamein , filenameout+"_UInt8_"+ type + extension ) ;
+      Cross< otb::Wrapper::Int16ImageType > ( i , filenamein , filenameout+"_Int16_"+ type + extension ) ;
+      Cross< otb::Wrapper::UInt16ImageType > ( i , filenamein , filenameout+"_UInt16_"+ type + extension ) ;
+      Cross< otb::Wrapper::Int32ImageType > ( i , filenamein , filenameout+"_Int21_"+ type + extension ) ;
+      Cross< otb::Wrapper::UInt32ImageType > ( i , filenamein , filenameout+"_UInt32_"+ type + extension ) ;
+      Cross< otb::Wrapper::FloatImageType > ( i , filenamein , filenameout+"_float_"+ type + extension ) ;
+      Cross< otb::Wrapper::DoubleImageType > ( i , filenamein , filenameout+"_double_"+ type + extension ) ;
+      Cross< otb::Wrapper::UInt8VectorImageType > ( i , filenamein , filenameout+"_UInt8Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::Int16VectorImageType > ( i , filenamein , filenameout+"_Int16Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::UInt16VectorImageType > ( i , filenamein , filenameout+"_UInt16Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::Int32VectorImageType > ( i , filenamein , filenameout+"_Int21Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::UInt32VectorImageType > ( i , filenamein , filenameout+"_UInt32Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::FloatVectorImageType > ( i , filenamein , filenameout+"_floatVect_"+ type + extension ) ;
+      Cross< otb::Wrapper::DoubleVectorImageType > ( i , filenamein , filenameout+"_doubleVect_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexInt16ImageType > ( i , filenamein , filenameout+"_CInt16_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexInt32ImageType > ( i , filenamein , filenameout+"_CInt32_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexFloatImageType > ( i , filenamein , filenameout+"_Cfloat_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexDoubleImageType > ( i , filenamein , filenameout+"_Cdouble_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexInt16VectorImageType > ( i , filenamein , filenameout+"_CInt16Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexInt32VectorImageType > ( i , filenamein , filenameout+"_CInt32Vect_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexFloatVectorImageType > ( i , filenamein , filenameout+"_CfloatVect_"+ type + extension ) ;
+      Cross< otb::Wrapper::ComplexDoubleVectorImageType > ( i , filenamein , filenameout+"_CdoubleVect_"+ type + extension ) ;
+    }
+  return 0;
+}