1

我正在尝试在 asp.net 中调整图像大小。除了实际调整大小的代码之外,我想知道为什么位图的 Save 重载之间存在如此大的差异

方法一

   ImageCodecInfo jpgEncoder =
        ImageCodecInfo.GetImageDecoders()
        .First(c => c.FormatID == ImageFormat.Jpeg.Guid);
    Encoder encoder = Encoder.Quality;
    EncoderParameters encoderParameters = new EncoderParameters(1);
    encoderParameters.Param[0] = new EncoderParameter(encoder, (long)quality);
bitmap.Save(_current_context.Response.OutputStream,jpgEncoder,encoderParameters)

方法二

bitmap.Save(_current_context.Response.OutputStream,ImageFormat.Jpeg)

因此,方法 1 以 100 质量输出此特定 jpeg 图像,大小约为 250kb。在 90 质量下,它下降到大约 100kb

然而,方法 2 将图像降低到大约 60kb,这是一个巨大的差异,并且也没有明显的差异。

我似乎找不到任何地方为什么差异如此之大,MSDN 关于这两个重载的细节为零。

任何见解都值得赞赏。谢谢

4

1 回答 1

0

查看似乎没有提供提取设置的方法的 ImageCodeInfo / Encoder 对象。我假设默认情况下它在保存时将质量设置为 100。

如果不深入研究 Windows Imaging 的东西,真的很难说。

您可以尝试使用 Default save (Method2) 和 Method 1 使用 100 来编写代码,看看它们是否相同。很可能是这样。

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoder.quality.aspx#Y800

于 2012-07-05T04:30:31.953 回答