]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkMetaImageWriter.cxx
Merge branch 'vtk8itk5wx3-mingw64' of ssh://git.creatis.insa-lyon.fr/bbtk into vtk8it...
[bbtk.git] / packages / vtk / src / bbvtkMetaImageWriter.cxx
index 140e6bb51dbfe76f0aeeb2f8df54cb4316f106e8..f17001ef72b3135a56044875f53de0fb55e75fde 100644 (file)
@@ -7,6 +7,13 @@
 #include <vtkExtractVOI.h> 
 #include <vtkMetaImageWriter.h> 
 
+#include "vtkJSONImageWriter.h"
+#include "vtkXMLImageDataWriter.h"
+#include "vtkXMLDataSetWriter.h"
+#include "vtkDataSetWriter.h"
+#include "vtkPDataSetWriter.h"
+#include "vtkXMLWriter.h"
+
 namespace bbvtk
 {
 
@@ -20,16 +27,34 @@ void MetaImageWriter::Save_mhdb( std::string filename  , vtkImageData* img ,int
        int i,j,k;
        int ext[6];
        int dim[3];
+       int elementType=img->GetScalarType();
+       
        img->GetExtent(ext);
        dim[0]=ext[1]-ext[0]+1;
        dim[1]=ext[3]-ext[2]+1;
-       dim[2]=ext[5]-ext[4]+1;
-       
+       dim[2]=ext[5]-ext[4]+1; 
        int bsx=ceil((double)dim[0]/(double)sizeB);
        int bsy=ceil((double)dim[1]/(double)sizeB);
        int bsz=ceil((double)dim[2]/(double)sizeB);
        int voi[6];
        std::string filenameBlock;      
+       std::string filenameBlockVti;   
+       if (filename.substr(filename.size()-5) == ".mhdb")  
+       { 
+               std::string cmd;
+//             cmd="rm -rf "+filename;
+               system( cmd.c_str() );
+               cmd="mkdir "+filename;
+               system( cmd.c_str() );
+       } 
+       
+       std::string fileinfoname=filename+"/info.dat";
+       FILE *ff=fopen(fileinfoname.c_str(),"w");
+         fprintf(ff,"SizeBlock = %d\n",sizeB);
+         fprintf(ff,"DimSize = %d %d %d\n" , dim[0],dim[1],dim[2] );
+         fprintf(ff,"ElementType = %d\n", elementType );
+       fclose(ff);     
+       
        for (i=0;i<bsx;i++)
        {
                for (j=0;j<bsy;j++)
@@ -51,15 +76,26 @@ void MetaImageWriter::Save_mhdb( std::string filename  , vtkImageData* img ,int
                                extract->UpdateWholeExtent();
                                extract->Modified();
                                extract->Update();
+                               filenameBlock           =filename+"/mhdb-"+ std::to_string(i)+"-"+ std::to_string(j)+"-"+ std::to_string(k)+".mha";
                                vtkMetaImageWriter* w = vtkMetaImageWriter::New();
                                w->SetInputData( extract->GetOutput() );
                                w->SetCompression(true);  
                                w->SetFileDimensionality(bbGetInputIn()->GetDataDimension());   // NTU
-                               filenameBlock=filename+"/a-"+ std::to_string(i)+"-"+ std::to_string(j)+"-"+ std::to_string(k)+".mhd";
-// printf("EED MetaImageWriter::Save_mhdb  name  = %s \n", filenameBlock.c_str() );    
                                w->SetFileName( filenameBlock.c_str() );  
                                w->Write();
                                w->Delete();
+                               
+/* Borrame
+                               filenameBlockVti=filenameBlock+"-ZLib.vti";
+                               vtkXMLImageDataWriter *writer = vtkXMLImageDataWriter::New();
+                               writer->SetDataModeToBinary();
+//                             writer->SetCompressionLevel(5);
+                               writer->SetCompressorTypeToZLib();
+                               writer->SetFileName( filenameBlockVti.c_str() );
+                               writer->SetInputData( bbGetInputIn() );
+                               writer->Write();
+*/
+                               
                                extract->Delete();
                        } // for k
                } // for j
@@ -74,6 +110,8 @@ void MetaImageWriter::Save_mhdb( std::string filename  , vtkImageData* img ,int
 void MetaImageWriter::Process()
 {
 
+printf("EED vtkMetaImageWriter::Process  START\n");  
+
 // THE MAIN PROCESSING METHOD BODY
 //   Here we simply set the input 'In' value to the output 'Out'
 //   And print out the output value
@@ -86,28 +124,23 @@ void MetaImageWriter::Process()
 //    * TYPE is the C++ type of the input/output
 //      (the one provided in the attribute 'type' of the tag 'input')
 
-
 //EED 2017-01-01 Migration VTK7
 #if VTK_MAJOR_VERSION <= 5
    bbGetInputIn()->Update();
 #else
        // ...
 #endif
-
        std::string userGivenName = bbGetInputFilename();
        if (bbGetInputIn()!=NULL)
        {
                if (userGivenName.substr(userGivenName.size()-5) == ".mhdb")  
                { 
-                       printf("EED vtkMetaImageWriter::Process  block..ups\n");
-                       
-                       Save_mhdb( userGivenName , bbGetInputIn() , 40 );
-                       
+                       Save_mhdb( userGivenName , bbGetInputIn() , bbGetInputSizeBlock() );
                } else {
-                               if (userGivenName.substr(userGivenName.size()-4) != ".mhd")  //JPR
+                               if (!((userGivenName.substr(userGivenName.size()-4) == ".mhd") || (userGivenName.substr(userGivenName.size()-4) == ".mha")))  //JPR
                                { 
                                        userGivenName += ".mhd";
-                               }
+                               } 
                           vtkMetaImageWriter* w = vtkMetaImageWriter::New();
        //EED 2017-01-01 Migration VTK7
        #if VTK_MAJOR_VERSION <= 5
@@ -123,7 +156,6 @@ void MetaImageWriter::Process()
                                 w->Delete();
                } // .mhdb
        } // bbGetInputIn()!=NULL
-
 printf("EED vtkMetaImageWriter::Process  END\n");  
 }
 //===== 
@@ -135,7 +167,7 @@ void MetaImageWriter::bbUserSetDefaultValues()
 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
 //    Here we initialize the input 'In' to 0
    bbSetInputCompression(false);
-  
+   bbSetInputSizeBlock(20);  
 }
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)