C#在线生成缩略图

13年前
/// <summary>         /// 获取截图         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         protected void btnGo_Click(object sender, EventArgs e)         {             HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(txtAddress.Text);             HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();             Stream myStream = HttpWResp.GetResponseStream();             System.Drawing.Image oImage = System.Drawing.Image.FromStream(myStream);             string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Second.ToString() + ".jpg";             oImage.Save(Server.MapPath("upFiles/" + fileName), System.Drawing.Imaging.ImageFormat.Gif);             string webFilePath = Server.MapPath(txtAddress.Text);             string webFilePath_s = Server.MapPath("smallFiles/" + fileName);             MakeThumbnail(webFilePath, webFilePath_s, 400, 200, "W");         }                        /// <summary>         /// 设置裁剪图片         /// </summary>         /// <param name="originalImagePath">图片地址</param>         /// <param name="thumbnailPath">物理地址</param>         /// <param name="width"></param>         /// <param name="height"></param>         /// <param name="mode"></param>         public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)         {             System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);                int towidth = width;             int toheight = height;                int x = 0;             int y = 0;             int ow = originalImage.Width;             int oh = originalImage.Height;                switch (mode)             {                 case "HW"://指定高宽缩放(可能变形)                     break;                 case "W"://指定宽,高按比例                     toheight = originalImage.Height * width / originalImage.Width;                     break;                 case "H"://指定高,宽按比例                     towidth = originalImage.Width * height / originalImage.Height;                     break;                 case "Cut"://指定高宽裁减(不变形)                     if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)                     {                         oh = originalImage.Height;                         ow = originalImage.Height * towidth / toheight;                         y = 0;                         x = (originalImage.Width - ow) / 2;                     }                     else                     {                         ow = originalImage.Width;                         oh = originalImage.Width * height / towidth;                         x = 0;                         y = (originalImage.Height - oh) / 2;                     }                     break;                 default:                     break;             }             System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);                //新建一个画板             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);             //设置高质量插值法             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;                //设置高质量,低速度呈现平滑程度             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;                //清空画布并以透明背景色填充             g.Clear(System.Drawing.Color.Transparent);                //在指定位置并且按指定大小绘制原图片的指定部分             g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),             new System.Drawing.Rectangle(x, y, ow, oh),             System.Drawing.GraphicsUnit.Pixel);                try             {                 using (MemoryStream ms = new MemoryStream())                 {                    }                 //以jpg格式保存缩略图                 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);             }             catch (System.Exception e)             {                 throw e;             }             finally             {                 originalImage.Dispose();                 bitmap.Dispose();                 g.Dispose();             }         }     }