asp.net 图片超过指定大小后等比例压缩图片的方法

  

复制代码 代码如下:

  /// <summary>

  /// 压缩图片

  /// </summary>

  /// <returns></returns>

  public string ResizePic()

  {

  #region 压缩图片开始

  bool IsImgFile = true;  //判断是否为图片文件

  string filePathName = "123";   //文件存储的路径(文件夹名称)

  string fileName = "a.jpg";   //上传文件的原始名称

  string fileSysName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "_" + fileName;  //修改后的文件名称

  string filePath = "";   //文件路径

  string strImgPath = "/fileupload/";   //上传路径

  if (IsImgFile)

  {

  int maxWidth = 600;   //图片宽度最大限制

  int maxHeight = 400;  //图片高度最大限制

  System.Drawing.Image imgPhoto =

  System.Drawing.Image.FromFile(Server.MapPath(strImgPath) + filePathName + "/" + fileSysName);

  int imgWidth = imgPhoto.Width;

  int imgHeight = imgPhoto.Height;

  if (imgWidth > imgHeight)  //如果宽度超过高度以宽度为准来压缩

  {

  if (imgWidth > maxWidth)  //如果图片宽度超过限制

  {

  float toImgWidth = maxWidth;   //图片压缩后的宽度

  float toImgHeight = imgHeight / (float)(imgWidth / toImgWidth); //图片压缩后的高度

  System.Drawing.Bitmap img = new System.Drawing.Bitmap(imgPhoto,

  int.Parse(toImgWidth.ToString()),

  int.Parse(toImgHeight.ToString()));

  string strResizePicName = Server.MapPath(strImgPath) + filePathName + "/_small_" + fileSysName;

  img.Save(strResizePicName);  //保存压缩后的图片

  filePath = strImgPath + filePathName + "/_small_" + fileSysName;  //返回压缩后的图片路径

  }

  }

  else

  {

  if (imgHeight > maxHeight)

  {

  float toImgHeight1 = maxHeight;

  float toImgWidth1 = imgWidth / (float)(imgHeight / toImgHeight1);

  System.Drawing.Bitmap img = new System.Drawing.Bitmap(imgPhoto,

  int.Parse(toImgWidth1.ToString()),

  int.Parse(toImgHeight1.ToString()));

  string strResizePicName = Server.MapPath(strImgPath) + filePathName + "/_small_" + fileSysName;

  img.Save(strResizePicName);

  filePath = strImgPath + filePathName + "/_small_" + fileSysName;

  }

  }

  }

  return filePath;

  #endregion

  }