]> Creatis software - clitk.git/commitdiff
Added compression option to clitkImageConvert
authorSimon Rit <simon.rit@creatis.insa-lyon.fr>
Tue, 23 Aug 2011 11:51:46 +0000 (13:51 +0200)
committerSimon Rit <simon.rit@creatis.insa-lyon.fr>
Tue, 23 Aug 2011 11:51:46 +0000 (13:51 +0200)
common/clitkImageCommon.h
common/clitkImageCommon.txx
common/clitkImageToImageGenericFilterBase.cxx
common/clitkImageToImageGenericFilterBase.h
tools/clitkImageConvert.cxx
tools/clitkImageConvert.ggo

index fbddb20d3ddabaaba554b0a662c36beba77b0364..32bba4916c1ec25244a09655bd1a3dcdf6cd54d2 100644 (file)
@@ -58,11 +58,11 @@ typename ImageType::Pointer readImage(const std::string & filename, const bool v
 template<typename ImageType>
 typename ImageType::Pointer readImage(const std::vector<std::string> & filenames, const bool verbose=false);
 template<class ImageType>
-void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose=false);
+void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose=false, const bool compression=false);
 //   template<class ImageType>
 //   void writeConstImage(const typename ImageType::ConstPointer image, const std::string & filename, const bool verbose=false);
 template<class ImageType>
-void writeImage(const ImageType* image, const std::string & filename, const bool verbose=false);
+void writeImage(const ImageType* image, const std::string & filename, const bool verbose=false, const bool compression=false);
 
 //--------------------------------------------------------------------
 // Read/print image header
index 5aa3b2eba55e44db3e973328c370b05935f95cab..a07c66f0459eca0743c41c460937e48a484c75a0 100644 (file)
@@ -188,34 +188,22 @@ typename ImageType::Pointer readImage(const std::vector<std::string> & filenames
 
 //--------------------------------------------------------------------
 template<class ImageType>
-void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose)
+void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose, const bool compression)
 {
-  typedef itk::ImageFileWriter<ImageType> WriterType;
-  typename WriterType::Pointer writer = WriterType::New();
-  writer->SetFileName(filename.c_str());
-  writer->SetInput(image);
-  if (verbose) {
-    std::cout << "Writing [" << filename << "] ... " << std::endl;
-  }
-  try {
-    writer->Update();
-  } catch( itk::ExceptionObject & err ) {
-    std::cerr << "Exception while writing image [" << filename << "]" << std::endl;
-    std::cerr << err << std::endl;
-    exit(-1);
-  }
+  return writeImage(image.GetPointer(), filename, verbose, compression);
 }
 //--------------------------------------------------------------------
 
 
 //--------------------------------------------------------------------
 template<class ImageType>
-void writeImage(const ImageType* image, const std::string & filename, const bool verbose)
+void writeImage(const ImageType* image, const std::string & filename, const bool verbose, const bool compression)
 {
   typedef itk::ImageFileWriter<ImageType> WriterType;
   typename WriterType::Pointer writer = WriterType::New();
   writer->SetFileName(filename.c_str());
   writer->SetInput(image);
+  writer->SetUseCompression(compression);
   if (verbose) {
     std::cout << "Writing [" << filename << "] ... " << std::endl;
   }
index 8b0505d7bb2ec214db028ef0fba9a1211640a5f3..5f9cfac54d283c092418ca372ea6355577d59043 100644 (file)
@@ -36,6 +36,7 @@ clitk::ImageToImageGenericFilterBase::ImageToImageGenericFilterBase(std::string
   m_FailOnImageTypeError = true;
   m_ReadOnDisk = true;
   m_WriteOnDisk = true;
+  m_WriteCompression = false;
   // m_LastError = "";
   // StopOnErrorOn();
   SetFilterBase(NULL);
@@ -72,6 +73,14 @@ void clitk::ImageToImageGenericFilterBase::EnableWriteOnDisk(bool b)
 //--------------------------------------------------------------------
 
 
+//--------------------------------------------------------------------
+void clitk::ImageToImageGenericFilterBase::EnableWriteCompression(bool b)
+{
+  m_WriteCompression = b;
+}
+//--------------------------------------------------------------------
+
+
 //--------------------------------------------------------------------
 void clitk::ImageToImageGenericFilterBase::SetInputFilename(const std::string & filename)
 {
@@ -321,7 +330,7 @@ template<class ImageType>
 void clitk::ImageToImageGenericFilterBase::SetNextOutput(typename ImageType::Pointer output)
 {
   if (m_WriteOnDisk && m_OutputFilenames.size()) {
-    clitk::writeImage<ImageType>(output, m_OutputFilenames.front(), m_IOVerbose);
+    clitk::writeImage<ImageType>(output, m_OutputFilenames.front(), m_IOVerbose, m_WriteCompression);
     m_OutputFilenames.pop_front();
   }
   if (m_InputVVImages.size()) //We assume that if a vv image is set as input, we want one as the output
index 039b850a59199ead284232b2ee13681080042c31..03b4f4acfa030d91b52e0804b521e06e6f30ed25 100644 (file)
@@ -62,6 +62,7 @@ namespace clitk {
     void SetInputFilenames(const std::vector<std::string> & filenames);
     void EnableReadOnDisk(bool b);
     void EnableWriteOnDisk(bool b);
+    void EnableWriteCompression(bool b);
     void SetOutputFilename(const std::string & filename);
     void AddOutputFilename(const std::string filename);
     void SetOutputFilenames(const std::vector<std::string> & filenames);
@@ -94,6 +95,8 @@ namespace clitk {
   protected:  
     bool m_ReadOnDisk;
     bool m_WriteOnDisk;
+    bool m_WriteCompression;
+
     /// Call this function to dispatch an output towards the correct sink
     template<class ImageType> 
     void SetNextOutput(typename ImageType::Pointer output);
index 7b14021ab28d9b13abd6159c17715172b9ecb33a..297b63711f6c107f389ea487b9049221582a4b44 100644 (file)
@@ -56,6 +56,7 @@ int main(int argc, char * argv[])
   filter->SetInputFilenames(l);
   filter->SetIOVerbose(args_info.verbose_flag);
   filter->SetOutputFilename(args_info.output_arg);
+  filter->EnableWriteCompression(args_info.compression_flag);
   if (args_info.type_given) filter->SetOutputPixelType(args_info.type_arg);
 
   // Go !
index 22e32916e4f76736b312cea8f00461c62cb2ae7f..395b43542655cbaf7bd5535bd9e4811750d77e46 100644 (file)
@@ -8,3 +8,4 @@ option "input"          i  "Input image filename"                       string  no multiple
 option "output"        o  "Output image filename"                      string  yes
 option "type"          t  "Output type (float, ushort ...)"            string  no
 option "verbose"       v  "Verbose"                                    flag    off
+option "compression"    c  "Compress output"                                   flag    off