Class T4AndT6Compression

java.lang.Object
org.apache.commons.imaging.common.itu_t4.T4AndT6Compression

public final class T4AndT6Compression extends Object
  • Field Details

  • Constructor Details

    • T4AndT6Compression

      private T4AndT6Compression()
  • Method Details

    • compress1DLine

      private static void compress1DLine(BitInputStreamFlexible inputStream, BitArrayOutputStream outputStream, int[] referenceLine, int width) throws ImageWriteException
      Throws:
      ImageWriteException
    • compressModifiedHuffman

      public static byte[] compressModifiedHuffman(byte[] uncompressed, int width, int height) throws ImageWriteException
      Compressed with the "Modified Huffman" encoding of section 10 in the TIFF6 specification. No EOLs, no RTC, rows are padded to end on a byte boundary.
      Parameters:
      uncompressed - uncompressed byte data
      width - image width
      height - image height
      Returns:
      the compressed data
      Throws:
      ImageWriteException - if it fails to write the compressed data
    • decompressModifiedHuffman

      public static byte[] decompressModifiedHuffman(byte[] compressed, int width, int height) throws ImageReadException
      Decompresses the "Modified Huffman" encoding of section 10 in the TIFF6 specification. No EOLs, no RTC, rows are padded to end on a byte boundary.
      Parameters:
      compressed - compressed byte data
      width - image width
      height - image height
      Returns:
      the compressed data
      Throws:
      ImageReadException - if it fails to read the compressed data
    • compressT4_1D

      public static byte[] compressT4_1D(byte[] uncompressed, int width, int height, boolean hasFill) throws ImageWriteException
      Throws:
      ImageWriteException
    • decompressT4_1D

      public static byte[] decompressT4_1D(byte[] compressed, int width, int height, boolean hasFill) throws ImageReadException
      Decompresses T.4 1D encoded data. EOL at the beginning and after each row, can be preceded by fill bits to fit on a byte boundary, no RTC.
      Parameters:
      compressed - compressed byte data
      width - image width
      height - image height
      hasFill - used to check the end of line
      Returns:
      the decompressed data
      Throws:
      ImageReadException - if it fails to read the compressed data
    • compressT

      private static int compressT(int a0, int a1, int b1, BitArrayOutputStream outputStream, int codingA0Color, int[] codingLine)
    • compressT4_2D

      public static byte[] compressT4_2D(byte[] uncompressed, int width, int height, boolean hasFill, int parameterK) throws ImageWriteException
      Throws:
      ImageWriteException
    • decompressT4_2D

      public static byte[] decompressT4_2D(byte[] compressed, int width, int height, boolean hasFill) throws ImageReadException
      Decompressed T.4 2D encoded data. EOL at the beginning and after each row, can be preceded by fill bits to fit on a byte boundary, and is succeeded by a tag bit determining whether the next line is encoded using 1D or 2D. No RTC.
      Parameters:
      compressed - compressed byte data
      width - image width
      height - image height
      hasFill - used to check the end of line
      Returns:
      the decompressed data
      Throws:
      ImageReadException - if it fails to read the compressed data
    • compressT6

      public static byte[] compressT6(byte[] uncompressed, int width, int height) throws ImageWriteException
      Throws:
      ImageWriteException
    • decompressT6

      public static byte[] decompressT6(byte[] compressed, int width, int height) throws ImageReadException
      Decompress T.6 encoded data. No EOLs, except for 2 consecutive ones at the end (the EOFB, end of fax block). No RTC. No fill bits anywhere. All data is 2D encoded.
      Parameters:
      compressed - compressed byte data
      width - image width
      height - image height
      Returns:
      the decompressed data
      Throws:
      ImageReadException - if it fails to read the compressed data
    • isEOL

      private static boolean isEOL(T4_T6_Tables.Entry entry, boolean hasFill)
    • writeRunLength

      private static void writeRunLength(BitArrayOutputStream bitStream, int runLength, int color)
    • lowerBound

      private static T4_T6_Tables.Entry lowerBound(T4_T6_Tables.Entry[] entries, int value)
    • readTotalRunLength

      private static int readTotalRunLength(BitInputStreamFlexible bitStream, int color) throws ImageReadException
      Throws:
      ImageReadException
    • changingElementAt

      private static int changingElementAt(int[] line, int position)
    • nextChangingElement

      private static int nextChangingElement(int[] line, int currentColour, int start)
    • fillRange

      private static void fillRange(BitArrayOutputStream outputStream, int[] referenceRow, int a0, int end, int color)