C# 为什么相同图像的流在不同版本的windows中具有不同的大小?(.NET)

C# 为什么相同图像的流在不同版本的windows中具有不同的大小?(.NET),c#,.net,image,system.drawing,C#,.net,Image,System.drawing,我正在做一个将图像文件合并成pdf文档的项目。我注意到,当我在服务器上运行项目时,pdf比我的开发机器上的要大 调试代码时,我发现当我将图像文件加载到图像对象中时,会得到不同的结果 我有以下代码: var img = System.Drawing.Image.FromFile("PathToFile"); MemoryStream ms = new MemoryStream(); img.Save(ms, System.Drawing.Imagin

我正在做一个将图像文件合并成pdf文档的项目。我注意到,当我在服务器上运行项目时,pdf比我的开发机器上的要大

调试代码时,我发现当我将图像文件加载到图像对象中时,会得到不同的结果

我有以下代码:

        var img = System.Drawing.Image.FromFile("PathToFile");
        MemoryStream ms = new MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

        var length = ms.ToArray().Length;
例如,589KB的图像文件

当我在Windows8机器上运行该代码时,长度是846781。 但当我在WindowsServer2008机器上对同一个映像运行相同的代码时,长度是1232806


这种差异从何而来?我做错什么了吗?

是不是其中一个是32位,另一个是64位?可能是因为不同版本的GDI+压缩不同。很可能是不同的jpeg编解码器。两者都是64位,我将研究GDI+版本和编解码器的内容。感谢您的回答。请尝试显式地将质量参数设置为95,然后检查差异。质量参数对JPEG图像的文件大小有很大的影响,您在这里使用的是默认值-可能已经更改。