Class T4AndT6Compression


  • public final class T4AndT6Compression
    extends java.lang.Object
    • Constructor Detail

      • T4AndT6Compression

        private T4AndT6Compression()
    • Method Detail

      • 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
      • 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
      • 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
      • writeRunLength

        private static void writeRunLength​(BitArrayOutputStream bitStream,
                                           int runLength,
                                           int color)
      • 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)