C#图片压缩

功能函数,从项目中剥离而来

/// <summary>
  /// 图片压缩功能
  /// </summary>
  /// <param name="sourceImage">原图</param>
  /// <param name="targetSize">目标压缩尺寸</param>
  /// <returns></returns>
  public static Image imgCompress(Image sourceImage, Size targetSize)  ///图片压缩功能
  {
    int targetWidth = targetSize.Width, targetHeight = targetSize.Height;  //图片转换的目标的尺寸;由于图片原有的比例问题,目标尺寸不等于最终的尺寸。
    int width;//图片最终的宽
    int height;//图片最终的高
    try
    {
      System.Drawing.Imaging.ImageFormat format = sourceImage.RawFormat;
      Bitmap targetPicture = new Bitmap(targetWidth, targetHeight);
      Graphics g = Graphics.FromImage(targetPicture);
      g.Clear(Color.White);
      //计算缩放图片的大小
      if (sourceImage.Width > targetWidth && sourceImage.Height <= targetHeight)
      {
        width = targetWidth;
        height = (width * sourceImage.Height) / sourceImage.Width;
      }
      else if (sourceImage.Width <= targetWidth && sourceImage.Height >  targetHeight)
      {
        height = targetHeight;
        width = (height * sourceImage.Width) / sourceImage.Height;
      }
      else if (sourceImage.Width <= targetWidth && sourceImage.Height <=  targetHeight)
      {
        width = sourceImage.Width;
        height = sourceImage.Height;
      }
      else
      {
        width = targetWidth;
        height = (width * sourceImage.Height) / sourceImage.Width;
        if (height > targetHeight)
        {
          height = targetHeight;
          width = (height * sourceImage.Width) / sourceImage.Height;
        }
      }
      g.DrawImage(sourceImage, (targetWidth - width) / 2, (targetHeight - height) /  2, width, height);
      sourceImage.Dispose();
      return targetPicture;
    }
    catch (Exception ex)
    {
    }
    return null;
  }

 调用示例

      HttpPostedFile pic_upload = Request.Files["file"];
      System.Drawing.Image bigImage = clsPublic.imgCompress(System.Drawing.Image.FromStream(pic_upload.InputStream), new Size(400, 400));//缩后的大图
      System.Drawing.Image minImage =clsPublic.imgCompress(System.Drawing.Image.FromStream(pic_upload.InputStream), new Size(50, 50));//缩后的小图

 

posted @ 2018-12-24 16:27  君宁天下  阅读(...)  评论(...编辑  收藏
野生程序员真的是太难了,一刻也不敢停止学习