Thin voxels border of ImageImport output
We use vtk 8.1 and 9.0 to take 2D screenshots of several slices in 3D images. When playing with a toy image with disabled interpolation, I discovered that all border voxels are thinner and I'm not sure why. Is this intended by vtk?
Here's a Python script, based on your ImageImport example.
import numpy as np
import vtk
z = 0
o = 255
data_slice = np.array([
[z, o, z, o, z],
[o, z, o, z, o],
[z, o, z, o, z],
[o, z, o, z, o],
[z, o, z, o, z],
], dtype='uint8')
data_importer = vtk.vtkImageImport()
data_str = data_slice.tostring()
data_importer.SetDataSpacing(1.0, 1.0, 1.0)
data_importer.SetDataOrigin(0.0, 0.0, 0.0)
data_importer.SetWholeExtent(0, 4, 0, 4, 0, 0)
data_importer.SetDataExtentToWholeExtent()
data_importer.SetDataScalarTypeToUnsignedChar()
data_importer.SetNumberOfScalarComponents(1)
data_importer.CopyImportVoidPointer(data_str, len(data_str))
data_importer.Update()
actor = vtk.vtkImageActor()
actor.SetInterpolate(False)
actor.SetInputData(data_importer.GetOutput())
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.ResetCamera()
render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(render_window)
iren.Initialize()
iren.Start()