loci.formats.in

## Class OMETiffReader

- java.lang.Object
- - loci.formats.FormatHandler
  - - loci.formats.FormatReader
    - - loci.formats.SubResolutionFormatReader
      - - loci.formats.in.OMETiffReader

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, ICompressedTileReader, IFormatHandler, IFormatReader, IMetadataConfigurable, IPyramidHandler

      public class OMETiffReader
      extends SubResolutionFormatReader

  OMETiffReader is the file format reader for OME-TIFF files.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `private class` | `OMETiffReader.OMETiffCoreMetadata`
    `private class` | `OMETiffReader.OMETiffPlane` Structure containing details on where to find a particular image plane.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static boolean` | `FAIL_ON_MISSING_DEFAULT`
    `static java.lang.String` | `FAIL_ON_MISSING_KEY`
    `private boolean` | `hasSPW`
    `protected OMETiffReader.OMETiffPlane[][]` | `info` Mapping from series and plane numbers to files and IFD entries.
    `private int` | `lastPlane`
    `private OMEXMLMetadata` | `meta`
    `private java.lang.String` | `metadataFile`
    `private java.lang.String` | `metaFile`
    `static java.lang.String[]` | `OME_TIFF_SUFFIXES`
    `private OMEXMLService` | `service`
    `protected java.lang.String[]` | `used` List of used files.

    - ### Fields inherited from class loci.formats.SubResolutionFormatReader

      `core`

    - ### Fields inherited from class loci.formats.FormatReader

      `coreIndex, datasetDescription, domains, fillColor, filterMetadata, flattenedResolutions, group, hasCompanionFiles, in, indexedAsRGB, metadata, metadataStore, normalizeData, resolution, saveOriginalMetadata, series, suffixNecessary, suffixSufficient, THUMBNAIL_DIMENSION`

    - ### Fields inherited from class loci.formats.FormatHandler

      `COMPRESSION_SUFFIXES, currentId, format, LOGGER, metadataOptions, suffixes`

    - ### Fields inherited from interface loci.formats.IFormatReader

      `CAN_GROUP, CANNOT_GROUP, MUST_GROUP`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OMETiffReader()` Constructs a new OME-TIFF reader.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `addSubResolutions()`
    `void` | `close(boolean fileOnly)` Closes the currently open file.
    `boolean` | `failOnMissingTIFF()`
    `int` | `fileGroupOption(java.lang.String id)` Returns an indication of whether the files in a multi-file dataset can be handled individually.
    `short[][]` | `get16BitLookupTable()` Gets the 16-bit color lookup table associated with the most recently opened image.
    `byte[][]` | `get8BitLookupTable()` Gets the 8-bit color lookup table associated with the most recently opened image.
    `protected java.util.ArrayList<java.lang.String>` | `getAvailableOptions()` Returns the list of available metadata options.
    `java.lang.String[]` | `getDomains()` Returns the list of domains represented by the current file.
    `private static IFD` | `getFirstIFD(java.lang.String fname)`
    `MetadataStore` | `getMetadataStoreForConversion()` Deprecated. Use the general `FormatReader.getMetadataStore()` method.
    `MetadataStore` | `getMetadataStoreForDisplay()` Deprecated. Use the general `FormatReader.getMetadataStore()` method.
    `int` | `getOptimalTileHeight()` Returns the optimal sub-image height for use with openBytes.
    `int` | `getOptimalTileWidth()` Returns the optimal sub-image width for use with openBytes.
    `int` | `getRequiredDirectories(java.lang.String[] files)` Returns the number of parent directories that are important when processing the given list of files.
    `java.lang.String[]` | `getSeriesUsedFiles(boolean noPixels)` Returns an array of filenames needed to open the current series.
    `protected void` | `initFile(java.lang.String id)` Initializes the given file (parsing header information, etc.).
    `private void` | `initializeReader(IFormatReader r, java.lang.String file)`
    `boolean` | `isSingleFile(java.lang.String id)` Returns true if the named file is expected to be the only file in the dataset.
    `boolean` | `isThisType(loci.common.RandomAccessInputStream stream)` Checks if the given stream is a valid stream for this file format.
    `boolean` | `isThisType(java.lang.String name, boolean open)` Checks if a file matches the type of this format reader.
    `private java.lang.String` | `normalizeFilename(java.lang.String dir, java.lang.String name)`
    `byte[]` | `openBytes(int no, byte[] buf, int x, int y, int w, int h)` Obtains a sub-image of the specified image plane into a pre-allocated byte array.
    `private java.lang.String` | `readMetadataFile()` Extracts the OME-XML from the current `metadataFile`.
    `private void` | `removeIFDComments(IFormatReader r)`
    `void` | `reopenFile()` Reopen any files that were closed, and which are expected to be open while the reader is open.
    `void` | `setSeries(int series)` Activates the specified series.
    `private void` | `setupService()`

    - ### Methods inherited from class loci.formats.SubResolutionFormatReader

      `coreIndexToSeries, flattenHashtables, getCoreIndex, getCoreMetadataList, getCurrentCore, getResolution, getResolutionCount, getSeries, getSeriesCount, seriesToCoreIndex, setCoreIndex, setResolution`

    - ### Methods inherited from class loci.formats.FormatReader

      `addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMetaList, addMeta, addMetaList, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMetaList, close, getAcquisitionMode, getAdvancedSeriesUsedFiles, getAdvancedUsedFiles, getArcType, getBinning, getBitsPerPixel, getCompression, getContrastMethod, getCorrection, getCurrentFile, getDatasetStructureDescription, getDetectorType, getDimensionOrder, getDimensionOrder, getEffectiveSizeC, getExperimentType, getFilamentType, getFillColor, getFillRule, getFilterType, getFontFamily, getFontStyle, getGlobalMeta, getGlobalMetadata, getIlluminationType, getImageCount, getImmersion, getIndex, getIndex, getLaserMedium, getLaserType, getMarker, getMedium, getMetadataStore, getMetadataStoreRoot, getMetadataValue, getMicrobeamManipulationType, getMicroscopeType, getModuloC, getModuloT, getModuloZ, getNamingConvention, getPixelType, getPixelType, getPossibleDomains, getPulse, getRGBChannelCount, getRotationTransform, getSeriesMeta, getSeriesMetadata, getSeriesMetadataValue, getSeriesUsedFiles, getSizeC, getSizeT, getSizeX, getSizeY, getSizeZ, getThumbSizeX, getThumbSizeY, getTileColumns, getTileRows, getUnderlyingReaders, getUsedFiles, getUsedFiles, getZCTCoords, getZCTModuloCoords, hasCompanionFiles, hasFlattenedResolutions, isFalseColor, isGroupFiles, isIndexed, isInterleaved, isInterleaved, isLittleEndian, isMetadataComplete, isMetadataFiltered, isNormalized, isOrderCertain, isOriginalMetadataPopulated, isRGB, isThisType, isThisType, isThumbnailSeries, isUsedFile, makeFilterMetadata, openBytes, openBytes, openBytes, openPlane, openThumbBytes, readPlane, readPlane, readPlane, setFillColor, setFlattenedResolutions, setGroupFiles, setId, setMetadataFiltered, setMetadataStore, setNormalized, setOriginalMetadataPopulated, updateMetadataLists`

    - ### Methods inherited from class loci.formats.FormatHandler

      `checkSuffix, checkSuffix, getFormat, getMetadataOptions, getNativeDataType, getSuffixes, getSupportedMetadataLevels, setMetadataOptions`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface loci.formats.IFormatHandler

      `getFormat, getNativeDataType, getSuffixes`

    - ### Methods inherited from interface loci.formats.IMetadataConfigurable

      `getMetadataOptions, getSupportedMetadataLevels, setMetadataOptions`

    - ### Methods inherited from interface loci.formats.ICompressedTileReader

      `getTileCodec, getTileCodecOptions, openCompressedBytes, openCompressedBytes`

- - ### Field Detail

    - #### OME_TIFF_SUFFIXES

          public static final java.lang.String[] OME_TIFF_SUFFIXES

    - #### FAIL_ON_MISSING_KEY

          public static final java.lang.String FAIL_ON_MISSING_KEY

      See Also:
        Constant Field Values

    - #### FAIL_ON_MISSING_DEFAULT

          public static final boolean FAIL_ON_MISSING_DEFAULT

      See Also:
        Constant Field Values

    - #### info

          protected OMETiffReader.OMETiffPlane[][] info

      Mapping from series and plane numbers to files and IFD entries.

    - #### used

          protected java.lang.String[] used

      List of used files.

    - #### lastPlane

          private int lastPlane

    - #### hasSPW

          private boolean hasSPW

    - #### service

          private OMEXMLService service

    - #### meta

          private transient OMEXMLMetadata meta

    - #### metaFile

          private java.lang.String metaFile

    - #### metadataFile

          private java.lang.String metadataFile

  - ### Constructor Detail

    - #### OMETiffReader

          public OMETiffReader()

      Constructs a new OME-TIFF reader.

  - ### Method Detail

    - #### getAvailableOptions

          protected java.util.ArrayList<java.lang.String> getAvailableOptions()

      Description copied from class: `FormatReader`
      Returns the list of available metadata options.
      Overrides:
        `getAvailableOptions` in class `FormatReader`

    - #### isSingleFile

          public boolean isSingleFile(java.lang.String id)
                               throws FormatException,
                                      java.io.IOException

      Description copied from interface: `IFormatReader`
      Returns true if the named file is expected to be the only file in the dataset. For single-file formats, always returns true.
      Specified by:
        `isSingleFile` in interface `IFormatReader`
      Overrides:
        `isSingleFile` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### isThisType

          public boolean isThisType(java.lang.String name,
                                    boolean open)

      Description copied from class: `FormatReader`
      Checks if a file matches the type of this format reader. Checks filename suffixes against those known for this format. If the suffix check is inconclusive and the open parameter is true, the file is opened and tested with `FormatReader.isThisType(RandomAccessInputStream)`.
      Specified by:
        `isThisType` in interface `IFormatReader`
      Overrides:
        `isThisType` in class `FormatReader`
        `open` - If true, and the file extension is insufficient to determine the file type, the (existing) file is opened for further analysis.

    - #### isThisType

          public boolean isThisType(loci.common.RandomAccessInputStream stream)
                             throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Checks if the given stream is a valid stream for this file format. The number of bytes read is format-dependent.
      Specified by:
        `isThisType` in interface `IFormatReader`
      Overrides:
        `isThisType` in class `FormatReader`
      Parameters:
        `stream` - A RandomAccessInputStream representing the file to check. The first byte in the stream is assumed to be the first byte in the file.
      Returns:
        true if the file represented by the stream can be read by this reader; false otherwise.
      Throws:
        `java.io.IOException`

    - #### getDomains

          public java.lang.String[] getDomains()

      Description copied from interface: `IFormatReader`
      Returns the list of domains represented by the current file.
      Specified by:
        `getDomains` in interface `IFormatReader`
      Overrides:
        `getDomains` in class `FormatReader`

    - #### setSeries

          public void setSeries(int series)

      Description copied from interface: `IFormatReader`
      Activates the specified series. This also resets the resolution to 0.
      Specified by:
        `setSeries` in interface `IFormatReader`
      Overrides:
        `setSeries` in class `SubResolutionFormatReader`
      See Also:
        `Note that the value can change depending upon whether resolutions are flattened, and so reader implementations should use the series and resolutions fields internally.`

    - #### get8BitLookupTable

          public byte[][] get8BitLookupTable()
                                      throws FormatException,
                                             java.io.IOException

      Description copied from interface: `IFormatReader`
      Gets the 8-bit color lookup table associated with the most recently opened image. If no image planes have been opened, or if `IFormatReader.isIndexed()` returns false, then this may return null. Also, if `IFormatReader.getPixelType()` returns anything other than `FormatTools.INT8` or `FormatTools.UINT8`, this method will return null.
      Specified by:
        `get8BitLookupTable` in interface `IFormatReader`
      Overrides:
        `get8BitLookupTable` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### get16BitLookupTable

          public short[][] get16BitLookupTable()
                                        throws FormatException,
                                               java.io.IOException

      Description copied from interface: `IFormatReader`
      Gets the 16-bit color lookup table associated with the most recently opened image. If no image planes have been opened, or if `IFormatReader.isIndexed()` returns false, then this may return null. Also, if `IFormatReader.getPixelType()` returns anything other than `FormatTools.INT16` or `FormatTools.UINT16`, this method will return null.
      Specified by:
        `get16BitLookupTable` in interface `IFormatReader`
      Overrides:
        `get16BitLookupTable` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### reopenFile

          public void reopenFile()
                          throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Reopen any files that were closed, and which are expected to be open while the reader is open. This assumes that `IFormatHandler.setId(java.lang.String)` has been called, but close(false) has not been called.
      Specified by:
        `reopenFile` in interface `IFormatReader`
      Overrides:
        `reopenFile` in class `FormatReader`
      Throws:
        `java.io.IOException`

    - #### openBytes

          public byte[] openBytes(int no,
                                  byte[] buf,
                                  int x,
                                  int y,
                                  int w,
                                  int h)
                           throws FormatException,
                                  java.io.IOException

      Description copied from interface: `IFormatReader`
      Obtains a sub-image of the specified image plane into a pre-allocated byte array.
      Specified by:
        `openBytes` in interface `IFormatReader`
      Specified by:
        `openBytes` in class `FormatReader`
      Parameters:
        `no` - the plane index within the current series.
        `buf` - a pre-allocated buffer.
        `x` - X coordinate of the upper-left corner of the sub-image
        `y` - Y coordinate of the upper-left corner of the sub-image
        `w` - width of the sub-image
        `h` - height of the sub-image
      Returns:
        the pre-allocated buffer `buf` for convenience.
      Throws:
        `FormatException` - if there was a problem parsing the metadata of the file.
        `java.io.IOException` - if there was a problem reading the file.

    - #### getSeriesUsedFiles

          public java.lang.String[] getSeriesUsedFiles(boolean noPixels)

      Description copied from interface: `IFormatReader`
      Returns an array of filenames needed to open the current series. If the 'noPixels' flag is set, then only files that do not contain pixel data will be returned. The first element in the array is expected to be the path passed to `IFormatHandler.setId(String)`, if appropriate based upon 'noPixels'. The remaining elements are expected to be in a consistent order; if a directory listing is necessary to build the list then it should be sorted first.
      Specified by:
        `getSeriesUsedFiles` in interface `IFormatReader`
      Overrides:
        `getSeriesUsedFiles` in class `FormatReader`

    - #### fileGroupOption

          public int fileGroupOption(java.lang.String id)

      Description copied from interface: `IFormatReader`
      Returns an indication of whether the files in a multi-file dataset can be handled individually. This method is only useful for formats and datasets which contain multiple files.
      Specified by:
        `fileGroupOption` in interface `IFormatReader`
      Overrides:
        `fileGroupOption` in class `FormatReader`
      Parameters:
        `id` - a file in the multi-file dataset
      Returns:
        an int indicating that we cannot, must, or might group the files. A return value of `FormatTools.MUST_GROUP` indicates that the files cannot be handled separately; the reader will always detect and read all files in the dataset. `FormatTools.CAN_GROUP` indicates that the files may be handled separately, but file grouping must then be disabled via `IFormatReader.setGroupFiles(boolean)`. `FormatTools.CANNOT_GROUP` indicates that the files must be handled separately; the reader will not attempt to read all files in the dataset (this is rare).
      See Also:
        `FormatTools.MUST_GROUP`, `FormatTools.CAN_GROUP`, `FormatTools.CANNOT_GROUP`

    - #### close

          public void close(boolean fileOnly)
                     throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Closes the currently open file. If the flag is set, this is all that happens; if unset, it is equivalent to calling `Closeable.close()`.
      Specified by:
        `close` in interface `IFormatReader`
      Overrides:
        `close` in class `SubResolutionFormatReader`
      Throws:
        `java.io.IOException`

    - #### getOptimalTileWidth

          public int getOptimalTileWidth()

      Description copied from interface: `IFormatReader`
      Returns the optimal sub-image width for use with openBytes.
      Specified by:
        `getOptimalTileWidth` in interface `IFormatReader`
      Overrides:
        `getOptimalTileWidth` in class `FormatReader`

    - #### getOptimalTileHeight

          public int getOptimalTileHeight()

      Description copied from interface: `IFormatReader`
      Returns the optimal sub-image height for use with openBytes.
      Specified by:
        `getOptimalTileHeight` in interface `IFormatReader`
      Overrides:
        `getOptimalTileHeight` in class `FormatReader`

    - #### getRequiredDirectories

          public int getRequiredDirectories(java.lang.String[] files)
                                     throws FormatException,
                                            java.io.IOException

      Description copied from interface: `IFormatReader`
      Returns the number of parent directories that are important when processing the given list of files. The number of directories is relative to the common parent. For example, given a list with these two files: /path/to/file/foo /path/to/file/that/is/related A return value of 0 indicates that "/path/to/file/" is irrelevant. A return value of 1 indicates that "/path/to/" is irrelevant. Return values less than 0 are invalid. All listed files are assumed to belong to datasets of the same format.
      Specified by:
        `getRequiredDirectories` in interface `IFormatReader`
      Overrides:
        `getRequiredDirectories` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### initFile

          protected void initFile(java.lang.String id)
                           throws FormatException,
                                  java.io.IOException

      Description copied from class: `SubResolutionFormatReader`
      Initializes the given file (parsing header information, etc.). Most subclasses should override this method to perform initialization operations such as parsing metadata.
      Overrides:
        `initFile` in class `SubResolutionFormatReader`
      Throws:
        `FormatException` - if a parsing error occurs processing the file.
        `java.io.IOException` - if an I/O error occurs processing the file

    - #### getMetadataStoreForDisplay

          public MetadataStore getMetadataStoreForDisplay()

      Deprecated. Use the general `FormatReader.getMetadataStore()` method.
      Get a MetadataStore suitable for display. Note: Historically, this method removed certain elements for display purposes and was not be suitable for use with FormatWriter due to not containing required BinData BigEndian attributes. This is no longer the case; the general `FormatReader.getMetadataStore()` method will always create valid metadata which is suitable for both display and use with FormatWriter, and so should be used instead.
      Returns:
        the metadata store.

    - #### getMetadataStoreForConversion

          public MetadataStore getMetadataStoreForConversion()

      Deprecated. Use the general `FormatReader.getMetadataStore()` method.
      Get a MetadataStore suitable for writing. Note: Historically, this method created metadata suitable for use with FormatWriter, but would possibly not generate valid OME-XML if both BinData and TiffData elements were present. This is no longer the case; the general `FormatReader.getMetadataStore()` method will always create valid metadata which is suitable for use with FormatWriter, and so should be used instead.
      Returns:
        the metadata store.

    - #### normalizeFilename

          private java.lang.String normalizeFilename(java.lang.String dir,
                                                     java.lang.String name)

    - #### setupService

          private void setupService()
                             throws FormatException

      Throws:
        `FormatException`

    - #### addSubResolutions

          private void addSubResolutions()
                                  throws java.io.IOException,
                                         FormatException

      Throws:
        `java.io.IOException`
        `FormatException`

    - #### readMetadataFile

          private java.lang.String readMetadataFile()
                                             throws java.io.IOException

      Extracts the OME-XML from the current `metadataFile`.
      Throws:
        `java.io.IOException`

    - #### getFirstIFD

          private static IFD getFirstIFD(java.lang.String fname)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### initializeReader

          private void initializeReader(IFormatReader r,
                                        java.lang.String file)
                                 throws FormatException,
                                        java.io.IOException

      Throws:
        `FormatException`
        `java.io.IOException`

    - #### removeIFDComments

          private void removeIFDComments(IFormatReader r)

    - #### failOnMissingTIFF

          public boolean failOnMissingTIFF()

Copyright © 2026 Open Microscopy Environment