#include <vtkExtractVOI.h>
#include <vtkMetaImageWriter.h>
+#include "vtkJSONImageWriter.h"
+#include "vtkXMLImageDataWriter.h"
+#include "vtkXMLDataSetWriter.h"
+#include "vtkDataSetWriter.h"
+#include "vtkPDataSetWriter.h"
+#include "vtkXMLWriter.h"
+#include <math.h>
+
namespace bbvtk
{
int i,j,k;
int ext[6];
int dim[3];
- img->GetExtent(ext);
- dim[0]=ext[1]-ext[0]+1;
- dim[1]=ext[3]-ext[2]+1;
- dim[2]=ext[5]-ext[4]+1;
+ int elementType=img->GetScalarType();
- int bsx=ceil((double)dim[0]/(double)sizeB);
- int bsy=ceil((double)dim[1]/(double)sizeB);
- int bsz=ceil((double)dim[2]/(double)sizeB);
+ img->GetExtent(ext);
+ dim[0] = ext[1]-ext[0]+1;
+ dim[1] = ext[3]-ext[2]+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++)
{
for (k=0;k<bsz;k++)
{
- voi[0]=i*sizeB;
- voi[1]=voi[0]+(sizeB-1);
- voi[2]=j*sizeB;
- voi[3]=voi[2]+(sizeB-1);
- voi[4]=k*sizeB;
- voi[5]=voi[4]+(sizeB-1);
+ voi[0] = i*sizeB;
+ voi[1] = voi[0]+(sizeB-1);
+ voi[2] = j*sizeB;
+ voi[3] = voi[2]+(sizeB-1);
+ voi[4] = k*sizeB;
+ voi[5] = voi[4]+(sizeB-1);
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; }
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
//=====
void MetaImageWriter::Process()
{
-
// THE MAIN PROCESSING METHOD BODY
// Here we simply set the input 'In' value to the output 'Out'
// And print out the output value
// * 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
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)
//=====
// 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)
//=====
void MetaImageWriter::bbUserInitializeProcessing()
{
-
// THE INITIALIZATION METHOD BODY :
// Here does nothing
// but this is where you should allocate the internal/output pointers
-// if any
-
-
+// if any
}
+
//=====
// 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)
//=====
void MetaImageWriter::bbUserFinalizeProcessing()
{
-
// THE FINALIZATION METHOD BODY :
// Here does nothing
// but this is where you should desallocate the internal/output pointers
// if any
-
}
-}
-// EO namespace bbvtk
+
+} // EO namespace bbvtk