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));//缩后的小图
  • 相关阅读:
    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging
    Chrome浏览器扩展开发系列之十三:消息传递Message
    Chrome浏览器扩展开发系列之十二:Content Scripts
    Chrome浏览器扩展开发系列之十一:NPAPI插件的使用
    Chrome浏览器扩展开发系列之十:桌面通知Notification
    《转载》使用CSS3 Flexbox布局
    CSS display属性的值及作用
    CSS中的各种居中方法总结
    《转载》详解 CSS 属性
    CSS3中新增的内容
  • 原文地址:https://www.cnblogs.com/ncellit/p/10169290.html
Copyright © 2011-2022 走看看