您的位置:首页 > 编程语言 > ASP

asp.net生成高清晰缩略图(缩小图片到指定大小)

2010-04-15 18:11 561 查看
/// /// 缩小图片 /// ///
原图片路径 ///
生成后的图片路径 ///
生成后的图片宽度 ///
生成后的图片高度 ///
图片按照什么方式伸缩 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)   {   Image originalImage = 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;

  }   //新建一个bmp图片

  Image bitmap = new Bitmap(towidth, toheight);   //新建一个画板

  Graphics g = Graphics.FromImage(bitmap);   //设置高质量插值法

  g.InterpolationMode = InterpolationMode.High;   //设置高质量,低速度呈现平滑程度

  g.SmoothingMode = SmoothingMode.HighQuality;   //清空画布并以透明背景色填充

  g.Clear(Color.Transparent);   //在指定位置并且按指定大小绘制原图片的指定部分

  g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),

  new Rectangle(x, y, ow, oh),

  GraphicsUnit.Pixel);

  try   {   //以jpg格式保存缩略图

  bitmap.Save(thumbnailPath, ImageFormat.Jpeg);   }

  catch (Exception e)

  {   throw e;   }

  finally

  {

  originalImage.Dispose();

  bitmap.Dispose();

  g.Dispose();

  }

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: