vtkTiffWriter does not write 3d volume
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
(Found in 6.1.0)
The vtkTiffWriter does not set the "number of pages" in a tiff file. If you try to write a 3d volume you get a single 2d slice whose height is (image height * number of slices). Reading back the file with VTK itself, or with ITK or ImageJ, does not give a 3d volume.
Example code:
const char* filename = "C:\\temp\\out.tiff";
int extents[6] = {0, 9, 0, 9, 0, 9};
vtkSmartPointer<vtkImageData> imageVolume = vtkSmartPointer<vtkImageData>::New();
imageVolume->SetExtent(extents);
imageVolume->AllocateScalars(VTK_UNSIGNED_SHORT, 1);
vtkSmartPointer<vtkTIFFWriter> writer = vtkSmartPointer<vtkTIFFWriter>::New();
writer->SetInputData( imageVolume );
writer->SetFileDimensionality(3);
writer->SetCompressionToNoCompression();
writer->SetFileName( filename );
writer->Write();
vtkSmartPointer<vtkTIFFReader> reader = vtkSmartPointer<vtkTIFFReader>::New();
reader->SetFileName( filename );
reader->SetFileDimensionality(3);
reader->Update();
reader->GetDataExtent(extents); // returns { 0, 9, 0, 99, 0, 0 }
I don't really understand what's happening, for example I can see the writer setting TIFFTAG_IMAGELENGTH to the image height, but when the reader reads the same tag it gets (height * number of slices).