diff --git a/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx b/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx
index de88f29bf436077f2e5e34eea2b90ebf8bbe18a4..92bd917a50f393676e5242cd26bb0504c5b585fa 100644
--- a/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx
+++ b/Modules/Applications/AppImageUtils/app/otbReadImageInfo.cxx
@@ -114,6 +114,10 @@ private:
     SetParameterDescription("numberbands", "Number of bands");
     SetParameterRole("numberbands", Role_Output);
 
+    AddParameter(ParameterType_String,"datatype","Data type");
+    SetParameterDescription("datatype", "Data type");
+    SetParameterRole("datatype", Role_Output);
+
     AddParameter(ParameterType_String,"sensor","Sensor id");
     SetParameterDescription("sensor", "Sensor identifier");
     SetParameterRole("sensor", Role_Output);
@@ -267,6 +271,15 @@ private:
     //Get number of bands
     SetParameterInt("numberbands",inImage->GetNumberOfComponentsPerPixel());
     ossOutput << "\tNumber of bands : " << GetParameterInt("numberbands") << std::endl;
+
+    // Get data type
+    ImageIOBase::IOComponentType typeInfo(ImageIOBase::UNKNOWNCOMPONENTTYPE);
+    itk::ExposeMetaData< ImageIOBase::IOComponentType >( inImage->GetMetaDataDictionary(),
+							 MetaDataKey::DataType , typeInfo);
+    const std::string dataTypeAsString = ImageIOBase::GetComponentTypeAsString(typeInfo);
+    SetParameterString("datatype", dataTypeAsString);
+    ossOutput << "\tData type : " << GetParameterString("datatype") << std::endl;
+
     std::vector<bool> noDataValueAvailable;
     bool ret = itk::ExposeMetaData<std::vector<bool> >(inImage->GetMetaDataDictionary(),MetaDataKey::NoDataValueAvailable,noDataValueAvailable);
 
@@ -299,7 +312,7 @@ private:
     SetParameterInt("indexx",inImage->GetLargestPossibleRegion().GetIndex()[0]);
     SetParameterInt("indexy",inImage->GetLargestPossibleRegion().GetIndex()[1]);
 
-        ossOutput << "\tStart index :  [" << GetParameterInt("indexx") << "," << GetParameterInt("indexy") << "]" << std::endl;
+    ossOutput << "\tStart index :  [" << GetParameterInt("indexx") << "," << GetParameterInt("indexy") << "]" << std::endl;
 
     //Get image size
     SetParameterInt("sizex",inImage->GetLargestPossibleRegion().GetSize()[0]);
diff --git a/Modules/Core/ImageBase/include/otbImageIOBase.h b/Modules/Core/ImageBase/include/otbImageIOBase.h
index 09303fb5bbce2b2fa2e704f38ac311a8e7eb5515..cc9ed311222ab89394ca1fa737c1d7a1b041273e 100644
--- a/Modules/Core/ImageBase/include/otbImageIOBase.h
+++ b/Modules/Core/ImageBase/include/otbImageIOBase.h
@@ -204,7 +204,7 @@ public:
 
   /** Convenience method returns the IOComponentType as a string. This can be
    * used for writing output files. */
-  std::string GetComponentTypeAsString(IOComponentType) const;
+  static std::string GetComponentTypeAsString(IOComponentType);
 
   /** Convenience method returns the IOPixelType as a string. This can be
    * used for writing output files. */
diff --git a/Modules/Core/ImageBase/src/otbImageIOBase.cxx b/Modules/Core/ImageBase/src/otbImageIOBase.cxx
index 5699d526b1c2dac2f276abb613c329db79eae661..cf786378249370c5f1091a1f346d4187cff839ac 100644
--- a/Modules/Core/ImageBase/src/otbImageIOBase.cxx
+++ b/Modules/Core/ImageBase/src/otbImageIOBase.cxx
@@ -739,7 +739,7 @@ std::string ImageIOBase::GetByteOrderAsString(ByteOrder t) const
     }
 }
 
-std::string ImageIOBase::GetComponentTypeAsString(IOComponentType t) const
+std::string ImageIOBase::GetComponentTypeAsString(IOComponentType t)
 {
   std::string s;
   switch(t)