在asp.net 2.0应用程序中,我试图从上传的图像创建缩略图。然而,当我在Windows7下在我的电脑上测试应用程序时它工作正常,但在真正的Windows 2003 Server上,调整大小的图像质量更差。
这种差异可能来自哪里?不同的JPEG编解码器,如果是,如何在Win 2003 Server上更新?谢谢!
以下是代码:
调整图片大小:
Bitmap newBmp = new Bitmap(imgWidth,imgHeight,PixelFormat.Format24bppRgb); newBmp.SetResolution(inputBmp.HorizontalResolution, inputBmp.VerticalResolution);
//创建附加到的图形对象 新的位图Graphics newBmpGraphics = Graphics.FromImage(newBmp);
newBmpGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
newBmpGraphics.SmoothingMode = SmoothingMode.HighQuality;
newBmpGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
newBmpGraphics.DrawImage(inputBmp,new 矩形(0,0,imgWidth,imgHeight), new Rectangle(0,0,inputBmp.Width, inputBmp.Height),GraphicsUnit.Pixel);
保存图片:
System.IO.Stream imgStream = new System.IO.MemoryStream();
//获取ImageCodecInfo 期望的目标格式ImageCodecInfo destCodec = FindCodecForType(ImageMimeTypes.JPEG);
if(destCodec == null){ //没有可用于该格式的编解码器 抛出新的ArgumentException(“请求的格式图像/ jpeg没有 安装了可用的编解码器“, “destFormat”); }
//创建一个EncoderParameters 集合包含//参数 控制dest格式的编码器 EncoderParameters destEncParams = new EncoderParameters(1);
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality,(长)的质量);
destEncParams.Param [0] = qualityParam;
//保存所选的编解码器和 编码器参数 inputBmp.Save(imgStream,destCodec, destEncParams);
位图destBitmap = new 位图(imgStream);