本文整理汇总了C#中Ionic.Zlib.ZlibCodec.SetDeflateParams方法的典型用法代码示例。如果您正苦于以下问题:C# ZlibCodec.SetDeflateParams方法的具体用法?C# ZlibCodec.SetDeflateParams怎么用?C# ZlibCodec.SetDeflateParams使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ionic.Zlib.ZlibCodec
的用法示例。
在下文中一共展示了ZlibCodec.SetDeflateParams方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
private void Run()
{
int rc;
int j;
int bufferSize = 40000;
byte[] compressedBytes = new byte[bufferSize];
byte[] bufferToCompress= new byte[bufferSize];
byte[] decompressedBytes = new byte[bufferSize];
ZlibCodec compressingStream= new ZlibCodec();
rc = compressingStream.InitializeDeflate(CompressionLevel.BestSpeed);
CheckForError(compressingStream, rc, "InitializeDeflate");
compressingStream.OutputBuffer = compressedBytes;
compressingStream.NextOut = 0;
compressingStream.AvailableBytesOut = compressedBytes.Length;
// At this point, bufferToCompress is all zeroes, so it should compress
// very well:
compressingStream.InputBuffer = bufferToCompress;
compressingStream.AvailableBytesIn = bufferToCompress.Length;
rc = compressingStream.Deflate(FlushType.None);
CheckForError(compressingStream, rc, "deflate");
if (compressingStream.AvailableBytesIn != 0)
{
System.Console.Out.WriteLine("deflate not greedy");
System.Environment.Exit(1);
}
Console.WriteLine("Stage 1: uncompressed bytes in so far: {0,6}", compressingStream.TotalBytesIn);
Console.WriteLine(" compressed bytes out so far: {0,6}", compressingStream.TotalBytesOut);
// Feed in already compressed data and switch to no compression:
compressingStream.SetDeflateParams(CompressionLevel.None, CompressionStrategy.Default);
compressingStream.InputBuffer = compressedBytes;
compressingStream.NextIn = 0;
compressingStream.AvailableBytesIn = bufferSize / 2; // why? - for fun
rc = compressingStream.Deflate(FlushType.None);
CheckForError(compressingStream, rc, "Deflate");
Console.WriteLine("Stage 2: uncompressed bytes in so far: {0,6}", compressingStream.TotalBytesIn);
Console.WriteLine(" compressed bytes out so far: {0,6}", compressingStream.TotalBytesOut);
// Insert data into bufferToCompress, and Switch back to compressing mode:
System.Random rnd = new Random();
for (int i = 0; i < bufferToCompress.Length / 1000; i++)
{
byte b = (byte) rnd.Next();
int n = 500 + rnd.Next(500);
for (j = 0; j < n; j++)
bufferToCompress[j + i] = b;
i += j-1;
}
compressingStream.SetDeflateParams(CompressionLevel.BestCompression, CompressionStrategy.Filtered);
compressingStream.InputBuffer = bufferToCompress;
compressingStream.NextIn = 0;
compressingStream.AvailableBytesIn = bufferToCompress.Length;
rc = compressingStream.Deflate(FlushType.None);
CheckForError(compressingStream, rc, "Deflate");
Console.WriteLine("Stage 3: uncompressed bytes in so far: {0,6}", compressingStream.TotalBytesIn);
Console.WriteLine(" compressed bytes out so far: {0,6}", compressingStream.TotalBytesOut);
rc = compressingStream.Deflate(FlushType.Finish);
if (rc != ZlibConstants.Z_STREAM_END)
{
Console.WriteLine("deflate reported {0}, should report Z_STREAM_END", rc);
Environment.Exit(1);
}
rc = compressingStream.EndDeflate();
CheckForError(compressingStream, rc, "EndDeflate");
Console.WriteLine("Stage 4: uncompressed bytes in (final): {0,6}", compressingStream.TotalBytesIn);
Console.WriteLine(" compressed bytes out (final): {0,6}", compressingStream.TotalBytesOut);
ZlibCodec decompressingStream = new ZlibCodec(CompressionMode.Decompress);
decompressingStream.InputBuffer = compressedBytes;
decompressingStream.NextIn = 0;
decompressingStream.AvailableBytesIn = bufferSize;
// upon inflating, we overwrite the decompressedBytes buffer repeatedly
while (true)
{
decompressingStream.OutputBuffer = decompressedBytes;
decompressingStream.NextOut = 0;
decompressingStream.AvailableBytesOut = decompressedBytes.Length;
rc = decompressingStream.Inflate(FlushType.None);
if (rc == ZlibConstants.Z_STREAM_END)
break;
CheckForError(decompressingStream, rc, "inflate large");
}
rc = decompressingStream.EndInflate();
CheckForError(decompressingStream, rc, "EndInflate");
//.........这里部分代码省略.........
示例2: Zlib_Codec_TestLargeDeflateInflate
public void Zlib_Codec_TestLargeDeflateInflate()
{
int rc;
int j;
int bufferSize = 80000;
byte[] compressedBytes = new byte[bufferSize];
byte[] workBuffer = new byte[bufferSize / 4];
ZlibCodec compressingStream = new ZlibCodec();
rc = compressingStream.InitializeDeflate(CompressionLevel.Level1);
Assert.AreEqual<int>(ZlibConstants.Z_OK, rc, String.Format("at InitializeDeflate() [{0}]", compressingStream.Message));
compressingStream.OutputBuffer = compressedBytes;
compressingStream.AvailableBytesOut = compressedBytes.Length;
compressingStream.NextOut = 0;
System.Random rnd = new Random();
for (int k = 0; k < 4; k++)
{
switch (k)
{
case 0:
// At this point, workBuffer is all zeroes, so it should compress very well.
break;
case 1:
// switch to no compression, keep same workBuffer (all zeroes):
compressingStream.SetDeflateParams(CompressionLevel.None, CompressionStrategy.Default);
break;
case 2:
// Insert data into workBuffer, and switch back to compressing mode.
// we'll use lengths of the same random byte:
for (int i = 0; i < workBuffer.Length / 1000; i++)
{
byte b = (byte)rnd.Next();
int n = 500 + rnd.Next(500);
for (j = 0; j < n; j++)
workBuffer[j + i] = b;
i += j - 1;
}
compressingStream.SetDeflateParams(CompressionLevel.BestCompression, CompressionStrategy.Filtered);
break;
case 3:
// insert totally random data into the workBuffer
rnd.NextBytes(workBuffer);
break;
}
compressingStream.InputBuffer = workBuffer;
compressingStream.NextIn = 0;
compressingStream.AvailableBytesIn = workBuffer.Length;
rc = compressingStream.Deflate(FlushType.None);
Assert.AreEqual<int>(ZlibConstants.Z_OK, rc, String.Format("at Deflate({0}) [{1}]", k, compressingStream.Message));
if (k == 0)
Assert.AreEqual<int>(0, compressingStream.AvailableBytesIn, "Deflate should be greedy.");
TestContext.WriteLine("Stage {0}: uncompressed/compresssed bytes so far: ({1,6}/{2,6})",
k, compressingStream.TotalBytesIn, compressingStream.TotalBytesOut);
}
rc = compressingStream.Deflate(FlushType.Finish);
Assert.AreEqual<int>(ZlibConstants.Z_STREAM_END, rc, String.Format("at Deflate() [{0}]", compressingStream.Message));
rc = compressingStream.EndDeflate();
Assert.AreEqual<int>(ZlibConstants.Z_OK, rc, String.Format("at EndDeflate() [{0}]", compressingStream.Message));
TestContext.WriteLine("Final: uncompressed/compressed bytes: ({0,6},{1,6})",
compressingStream.TotalBytesIn, compressingStream.TotalBytesOut);
ZlibCodec decompressingStream = new ZlibCodec(CompressionMode.Decompress);
decompressingStream.InputBuffer = compressedBytes;
decompressingStream.NextIn = 0;
decompressingStream.AvailableBytesIn = bufferSize;
// upon inflating, we overwrite the decompressedBytes buffer repeatedly
int nCycles = 0;
while (true)
{
decompressingStream.OutputBuffer = workBuffer;
decompressingStream.NextOut = 0;
decompressingStream.AvailableBytesOut = workBuffer.Length;
rc = decompressingStream.Inflate(FlushType.None);
nCycles++;
if (rc == ZlibConstants.Z_STREAM_END)
break;
Assert.AreEqual<int>(ZlibConstants.Z_OK, rc, String.Format("at Inflate() [{0}] TotalBytesOut={1}",
decompressingStream.Message, decompressingStream.TotalBytesOut));
}
rc = decompressingStream.EndInflate();
Assert.AreEqual<int>(ZlibConstants.Z_OK, rc, String.Format("at EndInflate() [{0}]", decompressingStream.Message));
//.........这里部分代码省略.........