gpt4 book ai didi

.net - 使用 mono 的 gdi+ 库的相同方法在不同机器上给出非常不同的结果

转载 作者:行者123 更新时间:2023-12-01 04:07:53 25 4
gpt4 key购买 nike

我一直在挠头,因为我几乎不知道如何开始理解我手中的问题。
问题是我使用的静态方法(我从 SO 中的一些帖子中获取了该方法),它将 System.Drawing.Image 保存到磁盘上的 jpeg 文件中,看起来像这样:

public static void SaveJpeg(string path, Image image, int quality) {
//create an encoder parameter for the image quality
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
EncoderParameter compressionParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionNone);

// Now in this part there is some code which gets the jpeg ImageCodecInfo
// from ImageCodecInfo.GetImageEncoders()
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");

//create a collection of all parameters that we will pass to the encoder
EncoderParameters encoderParams = new EncoderParameters(2);
//set the quality and compression parameters for the codec
encoderParams.Param[0] = qualityParam;
encoderParams.Param[1] = compressionParam;
//save the image using the codec and the parameters
image.Save(path, jpegCodec, encoderParams);
}

在我的网站中,用户首先提交缩小到 900x900 左右的图片(使用 GDI 本身,以减小文件大小,可以达到 4mb),然后保存到磁盘中。
问题在于,在我的机器和 Linode 节点中使用相同的 System.Drawing.Image 图像参数运行它会产生:
1. 在我的机器上,一个 3.1mb 的高分辨率图像变成了一个 ~80kb 的图像。
2. 在我的 Linode 中,完全相同的图像将产生约 500kb 的图像。

首先,我想强调的是,我在计算机中运行与在 Linode 中运行的 Web 应用程序完全相同的 Web 应用程序进行测试/开发。另外,我检查了两台机器上安装的所有软件的版本(顺便说一下,gentoo linux),我得到:
1. Mono:2.10.5,两台机器的USE标志相同;
2. Apache 2.2.21-r1,一些USE标志有点不同(但不应该干扰);
3. Mod_mono 2.10,两台机器的USE标志相同;
4. libgdiplus 2.10,同样的USE标志,然后尝试在机器上启用cairo in,结果没有变化;
5. cairo 1.10.2-r1,opengl标志在我的机器上已经启用,但在Linode中没有。

我想不出行为如此不同的原因。最大的区别是我的 Linode 是 32 位 Linux 3.0.4,而我的机器是 64 位 Linux 2.6.39,尽管我认为这也不应该干扰。

大家有没有类似的经历或想法?

最佳答案

libgdiplus 不进行自己的 JPEG 处理,它只包含一些将 GDI+ API 映射到 libjpeg 的胶水代码。在 libgdiplus 本身内部也没有 32/64 位不同的代码路径。

我怀疑您的机器上使用的 libjpeg 版本与 linode 上使用的版本之间存在一些差异。

关于.net - 使用 mono 的 gdi+ 库的相同方法在不同机器上给出非常不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com