loci.formats.in

## Class DCIMGReader

- java.lang.Object
- - loci.formats.FormatHandler
  - - loci.formats.FormatReader
    - - loci.formats.in.DCIMGReader

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

      public class DCIMGReader
      extends FormatReader

  DCIMGReader reads Hamamatsu DCIMG files. Follows spec/code at https://github.com/python-microscopy/python-microscopy/blob/master/PYME/IO/dcimg.py and https://github.com/lens-biophotonics/dcimg/blob/master/dcimg.py.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private long` | `bytesPerImage`
    `private long` | `bytesPerRow`
    `private java.util.List<java.lang.String>` | `companionFiles`
    `private long` | `currentStreamPosition`
    `private long` | `dataOffset`
    `private static long` | `DCIMG_PIXELTYPE_MONO16`
    `private static long` | `DCIMG_PIXELTYPE_MONO8`
    `private static long` | `DCIMG_VERSION_0`
    `private static long` | `DCIMG_VERSION_1`
    `private boolean` | `fourPixelCorrectionInFooter`
    `private int` | `fourPixelCorrectionLine`
    `private long` | `fourPixelCorrectionOffset`
    `private long` | `fourPixelOffsetInFrame`
    `private long` | `frameFooterSize`
    `private long` | `headerSize`
    `private static boolean` | `IS_LITTLE`
    `private long` | `offsetToFooter`
    `private long` | `offsetToFourPixels`
    `private long` | `pixelType`
    `private java.lang.String[]` | `uniqueFiles`
    `private long` | `version`

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

      `core, 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
    `DCIMGReader()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `addFileToList(java.lang.String file)`
    `void` | `close(boolean fileOnly)` Closes the currently open file.
    `int` | `fileGroupOption(java.lang.String id)` Returns an indication of whether the files in a multi-file dataset can be handled individually.
    `private int` | `getFourPixelCorrectionLine()`
    `private long` | `getFourPixelCorrectionOffset()`
    `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.).
    `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.
    `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 void` | `parseDCAMVersion0Footer(loci.common.RandomAccessInputStream stream)`
    `private void` | `parseDCAMVersion0Header(loci.common.RandomAccessInputStream stream)`
    `private void` | `parseDCAMVersion1Header(loci.common.RandomAccessInputStream stream)`
    `private void` | `scanDirectory(loci.common.Location dir)`

    - ### 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, coreIndexToSeries, flattenHashtables, get16BitLookupTable, get8BitLookupTable, getAcquisitionMode, getAdvancedSeriesUsedFiles, getAdvancedUsedFiles, getArcType, getAvailableOptions, getBinning, getBitsPerPixel, getCompression, getContrastMethod, getCoreIndex, getCoreMetadataList, getCorrection, getCurrentCore, getCurrentFile, getDatasetStructureDescription, getDetectorType, getDimensionOrder, getDimensionOrder, getDomains, 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, getOptimalTileHeight, getOptimalTileWidth, getPixelType, getPixelType, getPossibleDomains, getPulse, getRequiredDirectories, getResolution, getResolutionCount, getRGBChannelCount, getRotationTransform, getSeries, getSeriesCount, 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, isThisType, isThumbnailSeries, isUsedFile, makeFilterMetadata, openBytes, openBytes, openBytes, openPlane, openThumbBytes, readPlane, readPlane, readPlane, reopenFile, seriesToCoreIndex, setCoreIndex, setFillColor, setFlattenedResolutions, setGroupFiles, setId, setMetadataFiltered, setMetadataStore, setNormalized, setOriginalMetadataPopulated, setResolution, setSeries, 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

    - #### IS_LITTLE

          private static final boolean IS_LITTLE

      See Also:
        Constant Field Values

    - #### DCIMG_VERSION_0

          private static final long DCIMG_VERSION_0

      See Also:
        Constant Field Values

    - #### DCIMG_VERSION_1

          private static final long DCIMG_VERSION_1

      See Also:
        Constant Field Values

    - #### DCIMG_PIXELTYPE_MONO8

          private static final long DCIMG_PIXELTYPE_MONO8

      See Also:
        Constant Field Values

    - #### DCIMG_PIXELTYPE_MONO16

          private static final long DCIMG_PIXELTYPE_MONO16

      See Also:
        Constant Field Values

    - #### version

          private long version

    - #### headerSize

          private long headerSize

    - #### dataOffset

          private long dataOffset

    - #### pixelType

          private long pixelType

    - #### bytesPerImage

          private long bytesPerImage

    - #### bytesPerRow

          private long bytesPerRow

    - #### offsetToFooter

          private long offsetToFooter

    - #### fourPixelCorrectionInFooter

          private boolean fourPixelCorrectionInFooter

    - #### offsetToFourPixels

          private long offsetToFourPixels

    - #### fourPixelOffsetInFrame

          private long fourPixelOffsetInFrame

    - #### fourPixelCorrectionLine

          private int fourPixelCorrectionLine

    - #### fourPixelCorrectionOffset

          private long fourPixelCorrectionOffset

    - #### currentStreamPosition

          private long currentStreamPosition

    - #### frameFooterSize

          private long frameFooterSize

    - #### companionFiles

          private java.util.List<java.lang.String> companionFiles

    - #### uniqueFiles

          private java.lang.String[] uniqueFiles

  - ### Constructor Detail

    - #### DCIMGReader

          public DCIMGReader()

  - ### Method Detail

    - #### 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`

    - #### fileGroupOption

          public int fileGroupOption(java.lang.String id)
                              throws FormatException,
                                     java.io.IOException

      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).
      Throws:
        `FormatException`
        `java.io.IOException`
      See Also:
        `FormatTools.MUST_GROUP`, `FormatTools.CAN_GROUP`, `FormatTools.CANNOT_GROUP`

    - #### 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`

    - #### 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`

    - #### 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.

    - #### initFile

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

      Description copied from class: `FormatReader`
      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 `FormatReader`
      Throws:
        `FormatException` - if a parsing error occurs processing the file.
        `java.io.IOException` - if an I/O error occurs processing the file

    - #### scanDirectory

          private void scanDirectory(loci.common.Location dir)
                              throws FormatException,
                                     java.io.IOException

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

    - #### addFileToList

          private void addFileToList(java.lang.String file)
                              throws FormatException,
                                     java.io.IOException

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

    - #### parseDCAMVersion0Header

          private void parseDCAMVersion0Header(loci.common.RandomAccessInputStream stream)
                                        throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseDCAMVersion1Header

          private void parseDCAMVersion1Header(loci.common.RandomAccessInputStream stream)
                                        throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### parseDCAMVersion0Footer

          private void parseDCAMVersion0Footer(loci.common.RandomAccessInputStream stream)
                                        throws java.io.IOException,
                                               FormatException

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

    - #### getFourPixelCorrectionLine

          private int getFourPixelCorrectionLine()

    - #### getFourPixelCorrectionOffset

          private long getFourPixelCorrectionOffset()

    - #### 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 `FormatReader`
      Throws:
        `java.io.IOException`

Copyright © 2026 Open Microscopy Environment