#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
{
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++)
{
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
-
-
}
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
// * 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
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)