ImageIO class for reading and writing VTK XML ImageData (.vti) files.
Supported on read (every encoding ParaView 5.x emits by default):
<VTKFile> attributes: type="ImageData", any version, any byte_order (LittleEndian / BigEndian), header_type in {UInt32, UInt64}.
<ImageData> attributes: WholeExtent, Origin, Spacing, and Direction (VTK 9+; defaults to identity when absent).
- Single-
<Piece> images.
<DataArray> format = "ascii" | "binary" (inline base64) | "appended" (raw or base64 AppendedData).
- compressor = vtkZLibDataCompressor, or absent (uncompressed).
- Pixel types: Scalar, Vector (3-component), RGB (3), RGBA (4), and symmetric second-rank tensor (6 components, VTK canonical [XX, YY, ZZ, XY, YZ, XZ] layout remapped to ITK's internal [e00, e01, e02, e11, e12, e22] on read).
Single-image semantics: VTIImageIO yields exactly one image per file. When <PointData> declares Scalars/Vectors/Tensors hint attributes, the named DataArray is selected; when no hint is given, the first <DataArray> child of <PointData> is used. Sibling DataArrays in the same <PointData> are silently ignored, since ITK's IO model is one image per file. Arrays inside <CellData>, <FieldData>, or other containers are not consumed (see F-011).
Supported on write:
<VTKFile version="1.0" header_type="UInt64"> matching ParaView 5.7+.
- format = "ascii" and "binary" (inline base64) for every supported pixel type except binary symmetric tensor (see deferred list).
- format = "appended" encoding="raw" + vtkZLibDataCompressor: enabled by calling SetUseCompression(true); produces the smallest files on disk and matches what ParaView emits by default for large images.
- Direction is always emitted as a row-major 3x3 Direction attribute, padded with identity for images of dimension < 3.
Deferred to the follow-up PR. Items marked (guard) raise an itkExceptionMacro tagged with the F-NNN identifier so git grep F-NNN locates the guard + test + commit; items marked (latent) have no public API surface today and so cannot be triggered without a code change, but are listed here so the F-NNN identifier is findable from the header:
- F-001 vtkLZ4DataCompressor read (guard)
- F-002 vtkLZMADataCompressor read (guard)
- F-003 appended-raw writer (no compression) (latent)
- F-004 streaming read for appended-raw (latent)
- F-005 multi-
<Piece> images (guard)
- F-007 binary symmetric-tensor write (guard)
- F-008 appended-base64 writer (latent)
- F-009 MetaDataDictionary round-trip (latent)
- F-010 catch-all for unknown compressors (guard)
- F-011
<CellData>-only images (only <PointData> consumed) (guard)
Implementation notes:
- XML header parsing uses expat (ITKExpat);
<!DOCTYPE>/<!ENTITY> declarations are rejected up-front to mitigate billion-laughs and XXE attacks.
- Expat is fed the file in chunks and suspended (XML_StopParser) at the
<AppendedData> start tag so binary bytes never enter the parser. For large files this avoids a full in-memory copy of the binary payload during ReadImageInformation().
Definition at line 94 of file itkVTIImageIO.h.
|
| bool | CanReadFile (const char *) override |
| |
| bool | CanWriteFile (const char *) override |
| |
| virtual::itk::LightObject::Pointer | CreateAnother () const |
| |
| virtual const char * | GetNameOfClass () const |
| |
| void | Read (void *buffer) override |
| |
| void | ReadImageInformation () override |
| |
| void | Write (const void *buffer) override |
| |
| void | WriteImageInformation () override |
| |
| virtual bool | CanStreamRead () |
| |
| virtual bool | CanStreamWrite () |
| |
| virtual ImageIORegion | GenerateStreamableReadRegionFromRequestedRegion (const ImageIORegion &requested) const |
| |
| virtual unsigned int | GetActualNumberOfSplitsForWriting (unsigned int numberOfRequestedSplits, const ImageIORegion &pasteRegion, const ImageIORegion &largestPossibleRegion) |
| |
| std::string | GetByteOrderAsString (IOByteOrderEnum) const |
| |
| virtual unsigned int | GetComponentSize () const |
| |
| virtual IOComponentEnum | GetComponentType () const |
| |
| virtual int | GetCompressionLevel () const |
| |
| virtual const std::string & | GetCompressor () const |
| |
| virtual std::vector< double > | GetDefaultDirection (unsigned int k) const |
| |
| virtual std::vector< double > | GetDirection (unsigned int i) const |
| |
| std::string | GetFileTypeAsString (IOFileEnum) const |
| |
| SizeType | GetImageSizeInBytes () const |
| |
| SizeType | GetImageSizeInComponents () const |
| |
| SizeType | GetImageSizeInPixels () const |
| |
| virtual bool | GetIsReadAsScalarPlusPalette () const |
| |
| virtual unsigned int | GetNumberOfDimensions () const |
| |
| virtual double | GetOrigin (unsigned int i) const |
| |
| virtual SizeType | GetPixelStride () const |
| |
| virtual double | GetSpacing (unsigned int i) const |
| |
| virtual ImageIORegion | GetSplitRegionForWriting (unsigned int ithPiece, unsigned int numberOfActualSplits, const ImageIORegion &pasteRegion, const ImageIORegion &largestPossibleRegion) |
| |
| const ArrayOfExtensionsType & | GetSupportedReadExtensions () const |
| |
| const ArrayOfExtensionsType & | GetSupportedWriteExtensions () const |
| |
| void | SetByteOrderToLittleEndian () |
| |
| virtual void | SetComponentType (const IOComponentEnum _arg) |
| |
| virtual void | SetCompressionLevel (int _arg) |
| |
| virtual void | SetCompressor (std::string _c) |
| |
| virtual void | SetDirection (unsigned int i, const std::vector< double > &direction) |
| |
| virtual void | SetDirection (unsigned int i, const vnl_vector< double > &direction) |
| |
| void | SetFileTypeToBinary () |
| |
| void | SetNumberOfDimensions (unsigned int) |
| |
| virtual void | SetOrigin (unsigned int i, double origin) |
| |
| virtual void | SetSpacing (unsigned int i, double spacing) |
| |
| virtual bool | SupportsDimension (unsigned long dim) |
| |
| virtual void | SetFileName (const char *_arg) |
| |
| virtual const char * | GetFileName () const |
| |
| virtual void | SetDimensions (unsigned int i, SizeValueType dim) |
| |
| virtual SizeValueType | GetDimensions (unsigned int i) const |
| |
| virtual void | SetIORegion (ImageIORegion _arg) |
| |
| virtual const ImageIORegion & | GetIORegion () const |
| |
| virtual void | SetPixelType (const itk::CommonEnums::IOPixel _arg) |
| |
| virtual itk::CommonEnums::IOPixel | GetPixelType () const |
| |
| virtual void | SetNumberOfComponents (unsigned int _arg) |
| |
| virtual const unsigned int & | GetNumberOfComponents () const |
| |
| virtual void | SetUseCompression (bool _arg) |
| |
| virtual bool | GetUseCompression () const |
| |
| virtual void | UseCompressionOn () |
| |
| virtual void | UseCompressionOff () |
| |
| virtual void | SetUseStreamedReading (bool _arg) |
| |
| virtual bool | GetUseStreamedReading () const |
| |
| virtual void | UseStreamedReadingOn () |
| |
| virtual void | UseStreamedReadingOff () |
| |
| virtual void | SetUseStreamedWriting (bool _arg) |
| |
| virtual bool | GetUseStreamedWriting () const |
| |
| virtual void | UseStreamedWritingOn () |
| |
| virtual void | UseStreamedWritingOff () |
| |
| virtual void | SetExpandRGBPalette (bool _arg) |
| |
| virtual bool | GetExpandRGBPalette () const |
| |
| virtual void | ExpandRGBPaletteOn () |
| |
| virtual void | ExpandRGBPaletteOff () |
| |
| virtual void | SetWritePalette (bool _arg) |
| |
| virtual bool | GetWritePalette () const |
| |
| virtual void | WritePaletteOn () |
| |
| virtual void | WritePaletteOff () |
| |
| virtual void | SetFileType (const IOFileEnum _arg) |
| |
| virtual IOFileEnum | GetFileType () const |
| |
| void | SetFileTypeToASCII () |
| |
| virtual void | SetByteOrder (const IOByteOrderEnum _arg) |
| |
| virtual IOByteOrderEnum | GetByteOrder () const |
| |
| void | SetByteOrderToBigEndian () |
| |
| template<typename TPixel> |
| void | SetPixelTypeInfo (const TPixel *) |
| |
| template<typename TComponent> |
| void | SetPixelTypeInfo (const RGBPixel< TComponent > *) |
| |
| template<typename TComponent> |
| void | SetPixelTypeInfo (const RGBAPixel< TComponent > *) |
| |
| template<unsigned int VLength> |
| void | SetPixelTypeInfo (const Offset< VLength > *) |
| |
| template<typename TComponent, unsigned int VLength> |
| void | SetPixelTypeInfo (const Vector< TComponent, VLength > *) |
| |
| template<typename TCoordinate, unsigned int VPointDimension> |
| void | SetPixelTypeInfo (const Point< TCoordinate, VPointDimension > *) |
| |
| template<typename TComponent, unsigned int VLength> |
| void | SetPixelTypeInfo (const CovariantVector< TComponent, VLength > *) |
| |
| template<typename TComponent, unsigned int VLength> |
| void | SetPixelTypeInfo (const SymmetricSecondRankTensor< TComponent, VLength > *) |
| |
| template<typename TComponent> |
| void | SetPixelTypeInfo (const DiffusionTensor3D< TComponent > *) |
| |
| template<typename TComponent> |
| void | SetPixelTypeInfo (const std::complex< TComponent > *) |
| |
| template<typename TComponent, unsigned int VLength> |
| void | SetPixelTypeInfo (const FixedArray< TComponent, VLength > *) |
| |
| template<typename TComponent> |
| void | SetPixelTypeInfo (const VariableLengthVector< TComponent > *) |
| |
| template<typename TValue> |
| void | SetPixelTypeInfo (const Array< TValue > *) |
| |
| template<typename TComponent, unsigned int VLength> |
| void | SetPixelTypeInfo (const Matrix< TComponent, VLength, VLength > *) |
| |
| template<typename TValue> |
| void | SetPixelTypeInfo (const VariableSizeMatrix< TValue > *) |
| |
| virtual bool | HasSupportedReadExtension (const char *fileName, bool ignoreCase=true) |
| |
| virtual bool | HasSupportedWriteExtension (const char *fileName, bool ignoreCase=true) |
| |
| virtual void | AbortGenerateDataOff () |
| |
| virtual void | AbortGenerateDataOn () |
| |
| virtual const bool & | GetAbortGenerateData () const |
| |
| virtual void | SetAbortGenerateData (bool _arg) |
| |
| virtual void | UpdateOutputData () |
| |
| void | UpdateProgress (float amount) |
| |
| virtual void | SetProgress (float _arg) |
| |
| virtual const float & | GetProgress () const |
| |
| unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
| |
| unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
| |
| virtual void | DebugOff () const |
| |
| virtual void | DebugOn () const |
| |
| Command * | GetCommand (unsigned long tag) |
| |
| bool | GetDebug () const |
| |
| MetaDataDictionary & | GetMetaDataDictionary () |
| |
| const MetaDataDictionary & | GetMetaDataDictionary () const |
| |
| virtual ModifiedTimeType | GetMTime () const |
| |
| virtual const TimeStamp & | GetTimeStamp () const |
| |
| bool | HasObserver (const EventObject &event) const |
| |
| void | InvokeEvent (const EventObject &) |
| |
| void | InvokeEvent (const EventObject &) const |
| |
| virtual void | Modified () const |
| |
| void | Register () const override |
| |
| void | RemoveAllObservers () |
| |
| void | RemoveObserver (unsigned long tag) const |
| |
| void | SetDebug (bool debugFlag) const |
| |
| void | SetReferenceCount (int) override |
| |
| void | UnRegister () const noexcept override |
| |
| void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
| |
| void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
| |
| virtual void | SetObjectName (std::string _arg) |
| |
| virtual const std::string & | GetObjectName () const |
| |
| Pointer | Clone () const |
| |
| virtual void | Delete () |
| |
| virtual int | GetReferenceCount () const |
| |
| void | Print (std::ostream &os, Indent indent=0) const |
| |
|
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| | VTIImageIO () |
| |
| | ~VTIImageIO () override |
| |
| void | AddSupportedReadExtension (const char *extension) |
| |
| void | AddSupportedWriteExtension (const char *extension) |
| |
| void | ComputeStrides () |
| |
| virtual unsigned int | GetActualNumberOfSplitsForWritingCanStreamWrite (unsigned int numberOfRequestedSplits, const ImageIORegion &pasteRegion) const |
| |
| SizeType | GetComponentStride () const |
| |
| virtual const ImageRegionSplitterBase * | GetImageRegionSplitter () const |
| |
| virtual unsigned int | GetPixelSize () const |
| |
| SizeType | GetRowStride () const |
| |
| SizeType | GetSliceStride () const |
| |
| virtual ImageIORegion | GetSplitRegionForWritingCanStreamWrite (unsigned int ithPiece, unsigned int numberOfActualSplits, const ImageIORegion &pasteRegion) const |
| |
| | ImageIOBase () |
| |
| virtual void | InternalSetCompressor (const std::string &_compressor) |
| |
| virtual void | OpenFileForReading (std::ifstream &inputStream, const std::string &filename, bool ascii=false) |
| |
| virtual void | OpenFileForWriting (std::ofstream &outputStream, const std::string &filename, bool truncate=true, bool ascii=false) |
| |
| virtual void | ReadBufferAsASCII (std::istream &is, void *buffer, IOComponentEnum ctype, SizeType numComp) |
| |
| bool | ReadBufferAsBinary (std::istream &is, void *buffer, SizeType num) |
| |
| virtual void | Reset (const bool freeDynamic=true) |
| |
| void | Resize (const unsigned int numDimensions, const unsigned int *dimensions) |
| |
| void | SetSupportedReadExtensions (const ArrayOfExtensionsType &) |
| |
| void | SetSupportedWriteExtensions (const ArrayOfExtensionsType &) |
| |
| virtual void | WriteBufferAsASCII (std::ostream &os, const void *buffer, IOComponentEnum ctype, SizeType numComp) |
| |
| | ~ImageIOBase () override |
| |
| virtual void | SetMaximumCompressionLevel (int) |
| |
| virtual int | GetMaximumCompressionLevel () const |
| |
| virtual void | GenerateData () |
| |
| | LightProcessObject () |
| |
| | ~LightProcessObject () override |
| |
| | Object () |
| |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| |
| virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
| |
| | ~Object () override |
| |
| virtual LightObject::Pointer | InternalClone () const |
| |
| | LightObject () |
| |
| virtual void | PrintHeader (std::ostream &os, Indent indent) const |
| |
| virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
| |
| virtual | ~LightObject () |
| |