我正在尝试使用asp.net中的图像重新调整大小。除了实际的重新调整代码之外,我想知道为什么位图的保存重载之间存在如此大的差异
方法1
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)
方法2
bitmap.Save(_current_context.Response.OutputStream,ImageFormat.Jpeg)
因此,100质量的方法1输出约250kb的特定jpeg图像。在90质量时,它降至约100kb
方法2然而,将图像降低到大约60kb,这是一个巨大的差异,也没有明显的差异。
我似乎无法找到为什么差异如此之大,MSDN对这两个重载没有任何细节。
任何见解都表示赞赏。感谢
答案 0 :(得分:0)
查看ImageCodeInfo / Encoder对象,这些对象似乎没有提供解压缩设置的方法。我认为默认情况下它会在保存时将质量设置为100。
如果不仔细研究Windows Imaging的内容,很难说。
您可以尝试使用默认保存(Method2)和使用100的方法1来查看代码,看看它们是否相同。这很有可能。
http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoder.quality.aspx#Y800