Skip to content


# WriteReadVtkImageData

VTKEx/Python/ImageData/WriteReadVtkImageData

Question

If you have a simple question about this example contact us at VTKExProject If your question is more complex and may require extended discussion, please use the VTK Discourse Forum

### Code

WriteReadVtkImageData.py

    import vtk

    def get_program_parameters():
        import argparse
        description = 'Generate image data, edit data points, store and reload it.'
        epilogue = '''
       '''
        parser = argparse.ArgumentParser(description=description, epilog=epilogue)
        parser.add_argument('filename', help='A required vtk filename, e.g. writeImageData.vti.', nargs='?',
                            const='writeImageData.vti',
                            type=str, default='writeImageData.vti')
        args = parser.parse_args()
        return args.filename

    def main():
        colors = vtk.vtkNamedColors()

        filename = get_program_parameters()

        imageData = vtk.vtkImageData()
        imageData.SetDimensions(3, 4, 5)
        imageData.AllocateScalars(vtk.VTK_DOUBLE, 1)

        dims = imageData.GetDimensions()

        # Fill every entry of the image data with '2.0'
        for z in range(dims[2]):
            for y in range(dims[1]):
                for x in range(dims[0]):
                    imageData.SetScalarComponentFromDouble(x, y, z, 0, 2.0)

        writer = vtk.vtkXMLImageDataWriter()
        writer.SetFileName(filename)
        writer.SetInputData(imageData)
        writer.Write()

        # Read the file (to test that it was written correctly)
        reader = vtk.vtkXMLImageDataReader()
        reader.SetFileName(filename)
        reader.Update()

        # Convert the image to a polydata
        imageDataGeometryFilter = vtk.vtkImageDataGeometryFilter()
        imageDataGeometryFilter.SetInputConnection(reader.GetOutputPort())
        imageDataGeometryFilter.Update()

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(imageDataGeometryFilter.GetOutputPort())

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetPointSize(3)

        # Setup rendering
        renderer = vtk.vtkRenderer()
        renderer.AddActor(actor)
        renderer.SetBackground(colors.GetColor3d('White'))
        renderer.ResetCamera()

        renderWindow = vtk.vtkRenderWindow()
        renderWindow.AddRenderer(renderer)

        renderWindowInteractor = vtk.vtkRenderWindowInteractor()

        renderWindowInteractor.SetRenderWindow(renderWindow)
        renderWindowInteractor.Initialize()
        renderWindowInteractor.Start()

    if __name__ == '__main__':
        main()