X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkMetaImageWriter.cxx;h=f17001ef72b3135a56044875f53de0fb55e75fde;hb=9bf93d26c92029689cb5da02822edb68d5835864;hp=140e6bb51dbfe76f0aeeb2f8df54cb4316f106e8;hpb=53a0182954e0416dfa5ea8c4a4d5ceba7ca9d472;p=bbtk.git diff --git a/packages/vtk/src/bbvtkMetaImageWriter.cxx b/packages/vtk/src/bbvtkMetaImageWriter.cxx index 140e6bb..f17001e 100644 --- a/packages/vtk/src/bbvtkMetaImageWriter.cxx +++ b/packages/vtk/src/bbvtkMetaImageWriter.cxx @@ -7,6 +7,13 @@ #include #include +#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;iUpdateWholeExtent(); 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)