Class ImgWriterRAW

java.lang.Object
jj2000.j2k.image.output.ImgWriter
gov.nih.mipav.model.file.rawjp2.ImgWriterRAW
Direct Known Subclasses:
ImgWriterRAWColor

public class ImgWriterRAW extends jj2000.j2k.image.output.ImgWriter
This class extends the ImgWriter abstract class for writing JP2 3D files. Each slice of the 3D image is written to the current offset in the ouput file. The class can take input data in ModelImage structure or BlkImgDataSrc (which is prefered in JJ2K context :-) Data: The image binary values appear one after the other (in raster order) immediately after the last header character ('\n') and are byte-aligned (they are packed into 1,2 or 4 bytes per sample, depending upon the bit-depth value).

If the data is unsigned, level shifting is applied adding 2^(bit depth - 1)

NOTE: This class is not thread safe, for reasons of internal buffering.

See Also:
  • ImgWriter
  • BlkImgDataSrc
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    The bit-depth of the input file (must be between 1 and 31)
    private byte[]
    The line buffer.
    protected int
    The index of the component from where to get the data
    protected jj2000.j2k.image.DataBlkInt
    A DataBlk, just used to avoid allocating a new one each time it is needed
    private int
    The number of fractional bits in the source data
    protected int
     
    (package private) boolean
    Whether the data must be signed when writing or not.
    (package private) int
    Used with level-shifting
    (package private) int
    Used during saturation (2^bitdepth-1 if unsigned, 2^(bitdepth-1)-1 if signed)
    (package private) int
    Used during saturation (0 if unsigned, -2^(bitdepth-1) if signed)
    protected ModelImage
    Model image pointer
    protected int
    The current offset of the raw pixel data in the RAW file
    protected int
    The number of layers/components
    protected int
    The current offset of the raw pixel data in the RAW file
    Where to write the data
    protected int
    The pack length of one sample (in bytes, according to the output bit-depth

    Fields inherited from class jj2000.j2k.image.output.ImgWriter

    DEF_STRIP_HEIGHT, h, src, w
  • Constructor Summary

    Constructors
    Constructor
    Description
    ImgWriterRAW(ModelImage mi, jj2000.j2k.image.BlkImgDataSrc imgSrc, boolean isSigned)
     
    ImgWriterRAW(File out, jj2000.j2k.image.BlkImgDataSrc imgSrc, int c, boolean isSigned)
    Creates a new writer to the specified File object, to write data from the specified component.
    ImgWriterRAW(String fname, jj2000.j2k.image.BlkImgDataSrc imgSrc, int c, boolean isSigned)
    Creates a new writer to the specified file, to write data from the specified component.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the underlying file or netwrok connection to where the data is written.
    void
    Writes all buffered data to the file or resource.
    int
     
    int
     
    void
    setImgType(int imgType)
     
    void
    setOffset(int slcIdx)
     
    void
    setSrc(jj2000.j2k.image.BlkImgDataSrc slc)
     
    Returns a string of information about the object, more than 1 line long.
    void
    Writes the source's current tile to the output.
    void
    write(int ulx, int uly, int w, int h)
    Writes the data of the specified area to the file, coordinates are relative to the current tile of the source.
    void
     
    void
     

    Methods inherited from class jj2000.j2k.image.output.ImgWriter

    finalize, writeAll

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • maxVal

      int maxVal
      Used during saturation (2^bitdepth-1 if unsigned, 2^(bitdepth-1)-1 if signed)
    • minVal

      int minVal
      Used during saturation (0 if unsigned, -2^(bitdepth-1) if signed)
    • levShift

      int levShift
      Used with level-shifting
    • isSigned

      boolean isSigned
      Whether the data must be signed when writing or not. In the latter case inverse level shifting must be applied
    • bitDepth

      protected int bitDepth
      The bit-depth of the input file (must be between 1 and 31)
    • out

      private RandomAccessFile out
      Where to write the data
    • offset

      protected int offset
      The current offset of the raw pixel data in the RAW file
    • modImgOffset

      protected int modImgOffset
      The current offset of the raw pixel data in the RAW file
    • db

      protected jj2000.j2k.image.DataBlkInt db
      A DataBlk, just used to avoid allocating a new one each time it is needed
    • fb

      private int fb
      The number of fractional bits in the source data
    • c

      protected int c
      The index of the component from where to get the data
    • nc

      protected int nc
      The number of layers/components
    • packBytes

      protected int packBytes
      The pack length of one sample (in bytes, according to the output bit-depth
    • buf

      private byte[] buf
      The line buffer.
    • modImg

      protected ModelImage modImg
      Model image pointer
    • imgType

      protected int imgType
  • Constructor Details

    • ImgWriterRAW

      public ImgWriterRAW(File out, jj2000.j2k.image.BlkImgDataSrc imgSrc, int c, boolean isSigned) throws IOException
      Creates a new writer to the specified File object, to write data from the specified component.

      The size of the image that is written to the file is the size of the component from which to get the data, specified by b, not the size of the source image (they differ if there is some sub-sampling).

      All the header informations are given by the BlkImgDataSrc source (component width, component height, bit-depth) and sign flag, which are provided to the constructor. The endianness is always big-endian (MSB first).

      Parameters:
      out - The file where to write the data
      imgSrc - The source from where to get the image data to write.
      c - The index of the component from where to get the data.
      isSigned - Whether the datas are signed or not (needed only when writing header).
      Throws:
      IOException
      See Also:
      • DataBlk
    • ImgWriterRAW

      public ImgWriterRAW(ModelImage mi, jj2000.j2k.image.BlkImgDataSrc imgSrc, boolean isSigned) throws IOException
      Throws:
      IOException
    • ImgWriterRAW

      public ImgWriterRAW(String fname, jj2000.j2k.image.BlkImgDataSrc imgSrc, int c, boolean isSigned) throws IOException
      Creates a new writer to the specified file, to write data from the specified component.

      The size of the image that is written to the file is the size of the component from which to get the data, specified by b, not the size of the source image (they differ if there is some sub-sampling).

      All header information is given by the BlkImgDataSrc source (component width, component height, bit-depth) and sign flag, which are provided to the constructor. The endianness is always big-endian (MSB first).

      Parameters:
      fname - The name of the file where to write the data
      imgSrc - The source from where to get the image data to write.
      c - The index of the component from where to get the data.
      isSigned - Whether the datas are signed or not (needed only when writing header).
      Throws:
      IOException
      See Also:
      • DataBlk
  • Method Details

    • close

      public void close() throws IOException
      Closes the underlying file or netwrok connection to where the data is written. Any call to other methods of the class become illegal after a call to this one.
      Specified by:
      close in class jj2000.j2k.image.output.ImgWriter
      Throws:
      IOException - If an I/O error occurs.
    • flush

      public void flush() throws IOException
      Writes all buffered data to the file or resource.
      Specified by:
      flush in class jj2000.j2k.image.output.ImgWriter
      Throws:
      IOException - If an I/O error occurs.
    • write

      public void write(int ulx, int uly, int w, int h) throws IOException
      Writes the data of the specified area to the file, coordinates are relative to the current tile of the source. Before writing, the coefficients are limited to the nominal range and packed into 1,2 or 4 bytes (according to the bit-depth).

      If the data is unisigned, level shifting is applied adding 2^(bit depth - 1)

      This method may not be called concurrently from different threads.

      If the data returned from the BlkImgDataSrc source is progressive, then it is requested over and over until it is not progressive anymore.

      Specified by:
      write in class jj2000.j2k.image.output.ImgWriter
      Parameters:
      ulx - The horizontal coordinate of the upper-left corner of the area to write, relative to the current tile.
      uly - The vertical coordinate of the upper-left corner of the area to write, relative to the current tile.
      width - The width of the area to write.
      height - The height of the area to write.
      Throws:
      IOException - If an I/O error occurs.
    • write

      public void write() throws IOException
      Writes the source's current tile to the output. The requests of data issued to the source BlkImgDataSrc object are done by strips, in order to reduce memory usage.

      If the data returned from the BlkImgDataSrc source is progressive, then it is requested over and over until it is not progressive anymore.

      Specified by:
      write in class jj2000.j2k.image.output.ImgWriter
      Throws:
      IOException - If an I/O error occurs.
      See Also:
      • DataBlk
    • writeModImg

      public void writeModImg() throws IOException
      Throws:
      IOException
    • toString

      public String toString()
      Returns a string of information about the object, more than 1 line long. The information string includes information from the underlying RandomAccessFile (its toString() method is called in turn).
      Overrides:
      toString in class Object
      Returns:
      A string of information about the object.
    • getOffset

      public int getOffset()
    • setOffset

      public void setOffset(int slcIdx)
    • setSrc

      public void setSrc(jj2000.j2k.image.BlkImgDataSrc slc)
    • writeSlice

      public void writeSlice() throws IOException
      Throws:
      IOException
    • getImgType

      public int getImgType()
    • setImgType

      public void setImgType(int imgType)