ASP.NET中高质量缩略图的生成代码
发布时间:2020-03-18 13:11:46 所属栏目:Asp教程 来源:互联网
导读:ASP.NET中高质量缩略图的生成代码
private Size NewSize(int maxWidth, int maxHeight, int width, int height) { double w = 0.0; double h = 0.0; double sw = Convert.ToDouble(width); double sh = Convert.ToDouble(height); double mw = Convert.ToDouble(maxWidth); double mh = Convert.ToDouble(maxHeight); if ( sw < mw && sh < mh ) { w = sw; h = sh; } else if ( (sw/sh) > (mw/mh) ) { w = maxWidth; h = (w * sh)/sw; } else { h = maxHeight; w = (h * sw)/sh; } return new Size(Convert.ToInt32(w), Convert.ToInt32(h)); } private void SendSmallImage(string fileName, int maxWidth, int maxHeight) { System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath(fileName)); System.Drawing.Imaging.ImageFormat thisFormat = img.RawFormat; Size newSize = NewSize(maxWidth, maxHeight, img.Width, img.Height); Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height); Graphics g = Graphics.FromImage(outBmp); // 设置画布的描绘质量 g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel); g.Dispose(); if (thisFormat.Equals(ImageFormat.Gif)) { Response.ContentType = "image/gif"; } else { Response.ContentType = "image/jpeg"; } // 以下代码为保存图片时,设置压缩质量 EncoderParameters encoderParams = new EncoderParameters(); long[] quality = new long[1]; quality[0] = 100; EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); encoderParams.Param[0] = encoderParam; //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。 ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo jpegICI = null; for (int x = 0; x < arrayICI.Length; x++) { if (arrayICI[x].FormatDescription.Equals("JPEG")) { jpegICI = arrayICI[x];//设置JPEG编码 break; } } if (jpegICI != null) { outBmp.Save(Response.OutputStream, jpegICI, encoderParams); } else { outBmp.Save(Response.OutputStream, thisFormat); } img.Dispose(); outBmp.Dispose(); } (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |