我不确定我是否做错了什么,但当我在 .NET 框架中使用一些最简单的功能时,我发现 Windows 8 发生了重大变化。我的一台机器是带有 Visual Studio 2010 高级版的 Windows 7 X64,另一台是带有完全相同的 Visual Studio 的 Windows 8 X64。Win7 / Win8 系统都是作为 MSDN 订阅者下载的,所以它们都是官方的。但是对于以下代码:
static void Main(string[] args)
{
byte[] dataBytes = new byte[256 * 256 * 4 + 256];
MemoryStream resultStream = new MemoryStream();
DeflateStream deflateStream = new DeflateStream(resultStream, CompressionMode.Compress);
deflateStream.Write(dataBytes, 0, dataBytes.Length);
Console.WriteLine(resultStream.Length);//2330
Bitmap a = new Bitmap(256, 256);
MemoryStream memoryStream1 = new MemoryStream();
a.Save(memoryStream1, ImageFormat.Png);
byte[] byteArray1 = memoryStream1.ToArray();
Console.WriteLine(byteArray1.Length);//1275
Console.Read();
}
它在 Window 7 上返回 2330/1275,但在 Windows 8 上返回 0/384。代码相同,都在 .NET Framework 4 Client Profile 下。
所以我做错了什么,或者它是 Windows 8 上的重大变化?
首先十分感谢。
感谢您的所有帮助。对于第一种情况,我尝试了以下代码
byte[] dataBytes = new byte[256 * 256 * 4 + 256];
MemoryStream resultStream = new MemoryStream();
DeflateStream deflateStream = new DeflateStream(resultStream, CompressionMode.Compress);
deflateStream.Write(dataBytes, 0, dataBytes.Length);
deflateStream.Close();
Console.WriteLine(resultStream.ToArray().Length);
我在 Windows7 上得到 2338,在 Windows8 上得到 271。因此,Windows 8 似乎确实做了一些优化以使结果流更小。