ASP.NET接收图片同时按比例生成缩略图保存到项目文件夹

ASP.NET接收图片同时按比例生成缩略图保存到项目文件夹

     
     string dir = context.Server.MapPath("UploadImages/" + number + "_" + createtimestamp);//上传原图的文件夹
     if (!Directory.Exists(dir))//如果文件夹不存在    
       {
          Directory.CreateDirectory(dir);//创建文件夹    
       }

     HttpFileCollection files = context.Request.Files;//多图片接收
                 
     if (files.Count > 0)
     {
         for (int i = 0; i < files.Count; i++)
            {
              int num = i + 1;
                 
              string filename = uptimestamp + "_" + num + ".jpg";//图片名称

              string path = System.IO.Path.Combine(dir, filename);//保存原图的完整路径

              files[i].SaveAs(path);//保存图片

              string origraph = "UploadImages/" + number + "_" + createtimestamp + "/" + filename;//原图url

              string newdir = context.Server.MapPath("ThumbNail/" + number + "_" + createtimestamp);//上传缩略图的文件夹
              if (!Directory.Exists(newdir))//如果文件夹不存在    
                {
                   Directory.CreateDirectory(newdir);//创建文件夹    
                }
              string newpath = System.IO.Path.Combine(newdir, filename);//保存缩略图的完整路径

              string thumbnail = "ThumbNail/" + number + "_" + createtimestamp + "/" + filename;//缩略图url

              Image img = Image.FromFile(path);//获取原图
              GetReducedImage(img, newpath, 0.3);//保存缩略图
           }
    }
    else 
    {
        Boolean status = false;
        //对象
        ActivityModel model = new ActivityModel
          {
              Status = status,
              Message = "图片不能为空!",
          };
        //对象序列化Json
        string strJson = JsonConvert.SerializeObject(model);
        context.Response.ContentType = "text/plain";
        context.Response.Write(strJson);
    }
        

按比例生成缩略图

        
        public Image ResourceImage;//原图
        private int ImageWidth;    //缩略图宽度
        private int ImageHeight;   //缩略图高度

        //按比例生成缩略图 
        /// <param name="ResourceImage">原图</param>  
        /// <param name="targetFilePath">缩略图保存的完整路径,参数格式:D:Images ilename.jpg</param>  
        /// <param name="Percent">原图缩小的百分比,如:需要80%,就填0.8</param>     

        public void GetReducedImage(Image ResourceImage, string targetFilePath, double Percent)
        {
            try
            {
                Image ReducedImage;

                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);

                ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);
                ImageHeight = Convert.ToInt32(ResourceImage.Height * Percent);

                ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);

                ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);

                ReducedImage.Dispose();

            }
            catch (Exception ex)
            {
                log.Error(ex);//捕获异常,将异常写入日志
            }
        }
        

在Web.config添加配置

  
  <system.web>
    <httpRuntime maxRequestLength="2097151" /><!--maxRequestLength (指示 ASP.NET 支持的最大文件上载大小)-->
  </system.web>

  <system.webServer>
    <security>
      <requestFiltering >
        <requestLimits maxAllowedContentLength="2147483647" ></requestLimits><!--上传的文件限制在2G以内-->
      </requestFiltering>
    </security>
  </system.webServer>
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值