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));//缩后的小图

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM