예제 #1
0
 public Compressor(byte[] image)
 {
     buf1 = new MemoryStream();
     if (PDF.original_zlib) {
     ods1 = new OptionalDeflateStream(buf1);
     ods1.Write(image, 0, image.Length);
     ods1.Close();
     } else {
     dos1 = new DeflaterOutputStream(buf1, new Deflater());
     dos1.Write(image, 0, image.Length);
     dos1.Finish();
     }
 }
예제 #2
0
 public Compressor(byte[] image)
 {
     buf1 = new MemoryStream();
     if (PDF.original_zlib)
     {
         ods1 = new OptionalDeflateStream(buf1);
         ods1.Write(image, 0, image.Length);
         ods1.Close();
     }
     else
     {
         dos1 = new DeflaterOutputStream(buf1, new Deflater());
         dos1.Write(image, 0, image.Length);
         dos1.Finish();
     }
 }
        public void Write(byte[] buffer, int off, int len)
        {
            if (PDF.original_zlib)
            {
                ds2.Write(buffer, off, len);
                return;
            }

            // Compress the data in the buffer
            ds1.Write(buffer, off, len);
            ds1.Close();
            buf2.WriteTo(buf1);

            // Calculate the Adler-32 checksum
            ulong s1 = 1L;
            ulong s2 = 0L;

            for (int i = 0; i < len; i++)
            {
                s1 = (s1 + buffer[off + i]) % prime;
                s2 = (s2 + s1) % prime;
            }
            appendAdler((s2 << 16) + s1);
        }