]> 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 3be47432b7c204995300c353bdaa25ac4a03bef1..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,20 +27,33 @@ 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);
-       
-       printf("EED MetaImageWriter::Save_mhdb  bsx bsy bsz  = %d %d %d\n", bsx,bsy,bsz);       
-       printf("EED MetaImageWriter::Save_mhdb  dim          = %d %d %d\n", dim[0],dim[1],dim[2]  );
-       
        int voi[6];
-       std::string filenameBlock;
+       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++)
        {
@@ -47,42 +67,39 @@ void MetaImageWriter::Save_mhdb( std::string filename  , vtkImageData* img ,int
                                voi[3]=voi[2]+(sizeB-1);
                                voi[4]=k*sizeB;
                                voi[5]=voi[4]+(sizeB-1);
-
-/*
-                               voi[0]=0;
-                               voi[1]=10;
-                               voi[2]=0;
-                               voi[3]=10;
-                               voi[4]=0;
-                               voi[5]=10;
-       */              
                                if (voi[1]>=dim[0]) { voi[1]=dim[0]-1; } 
                                if (voi[3]>=dim[1]) { voi[3]=dim[1]-1; } 
                                if (voi[5]>=dim[2]) { voi[5]=dim[2]-1; } 
-                               
                                vtkExtractVOI *extract = vtkExtractVOI::New();
                                extract->SetInputData( img );
                                extract->SetVOI(voi);   
                                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->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
        } // for i
-       
-               
 }
 
 
@@ -93,6 +110,8 @@ printf("EED MetaImageWriter::Save_mhdb  name  = %s \n", filenameBlock.c_str() );
 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
@@ -105,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() , 20 );
-                       
+                       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
@@ -142,8 +156,7 @@ void MetaImageWriter::Process()
                                 w->Delete();
                } // .mhdb
        } // bbGetInputIn()!=NULL
-
-  
+printf("EED vtkMetaImageWriter::Process  END\n");  
 }
 //===== 
 // 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)
@@ -154,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)