放气流结果令人失望,是否正常

本文关键字:是否 结果 | 更新日期: 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%。