源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ASP.NET中高质量缩略图的生成代码

  • 时间:2022-03-27 21:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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();         }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部