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; }
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; }