放气流结果令人失望,是否正常
本文关键字:是否 结果 | 更新日期: 2023-09-27 18:18:36
我正在尝试压缩图像文件通过网络发送,这是我的测试压缩方法
public void compress(MemoryStream inStream)
{
using (MemoryStream outStream = new MemoryStream())
{
using (DeflateStream deflate = new DeflateStream(outStream, CompressionMode.Compress, true))
{
Console.WriteLine(inStream.Length);
deflate.Write(inStream.GetBuffer(), 0, (int)inStream.Length);
deflate.Close();
Console.WriteLine(outStream.Length);
}
}
}
结果是
375531年354450年我想当压缩至少我应该得到5位数而不是6,这是正常的吗?我做得对吗?
Thanks in advance
您可能正在尝试压缩无法进一步压缩的流。
例如,像JPEG这样的有损图像格式通常只有很少的冗余数据,因此使用DeflateStream
压缩的能力是最小的。
请注意,DeflateStream
旨在在读取或写入流时动态压缩文件,并且不假设整个流在压缩过程中可用。您的示例将整个流存储在内存中,因此您可以使用其他"静态"压缩样式。
例如,您可能会发现使用Zip压缩可以获得更好的结果:http://dotnetzip.codeplex.com是一个很好的库。
即便如此,对于已经压缩的图像,期望的压缩率也不会超过~15%。