zoukankan      html  css  js  c++  java
  • 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));//缩后的小图
  • 相关阅读:
    家谱树 x
    codevs 1231 最优布线问题 x(find函数要从娃娃抓起系列)
    洛谷 P1546 最短网络 Agri-Net x
    codevs 5969 [AK]刻录光盘x
    家谱(gen)x
    [POJ2594]Treasure Exploration(最小路径覆盖变种,floyd算法,匈牙利算法)
    [HDOJ5855]Less Time, More profit(最大权闭合子图,二分,最大流)
    [HDOJ1054]Strategic Game(最小点覆盖,最大二分匹配,HK算法)
    [HDOJ3829]Cat VS Dog(最大独立集)
    [HDOJ3488]Tour(二分图最小匹配,KM算法)
  • 原文地址:https://www.cnblogs.com/ncellit/p/10169290.html
Copyright © 2011-2022 走看看