Esempio n. 1
0
		public int Compress(PointCloudTile tile, byte[] uncompressedBuffer, int count, byte[] compressedBuffer)
		{
			MemorableMemoryStream compressedStream = new MemorableMemoryStream(compressedBuffer);

			using (ZipOutputStream zipStream = new ZipOutputStream(compressedStream, true))
			{
				zipStream.CompressionMethod = Ionic.Zip.CompressionMethod.Deflate;
				zipStream.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed;

				zipStream.PutNextEntry("a");
				zipStream.Write(uncompressedBuffer, 0, count);
			}

			return (int)compressedStream.MaxPosition;
		}
Esempio n. 2
0
        public int Compress(PointCloudTile tile, byte[] uncompressedBuffer, int count, byte[] compressedBuffer)
        {
            SevenZipCompressor compressor = new SevenZipCompressor
            {
                CompressionMethod = SevenZip.CompressionMethod.Lzma2,
                CompressionLevel = CompressionLevel.Fast
            };

            MemoryStream uncompressedStream = new MemoryStream(uncompressedBuffer, 0, count, false);

            // custom stream is required because the position is always 32 instead of the end of the stream
            MemorableMemoryStream compressedStream = new MemorableMemoryStream(compressedBuffer);

            compressor.CompressStream(uncompressedStream, compressedStream);

            return (int)compressedStream.MaxPosition;
        }