zoukankan      html  css  js  c++  java
  • ASP.NET C#上传图片生成缩略图 TC

    资料原自网络,本人小小修改一下,备注以后使用。

    CS代码 

    代码
      1  /// <summary> 
      2     /// asp.net上传图片并生成缩略图 
      3     /// </summary> 
      4     /// <param name="upImage">HtmlInputFile控件</param> 
      5     /// <param name="sSavePath">保存的路径,些为相对服务器路径的下的文件夹</param> 
      6     /// <param name="sThumbExtension">缩略图的thumb</param> 
      7     /// <param name="intThumbWidth">生成缩略图的宽度</param> 
      8     /// <param name="intThumbHeight">生成缩略图的高度</param> 
      9     /// <returns>缩略图名称</returns> 
     10     public string UpLoadImage(HtmlInputFile upImage, string sSavePath, string sThumbExtension, int intThumbWidth, int intThumbHeight)
     11     {
     12         #region
     13         #region
     14         string sThumbFile = "";
     15         string sFilename = "";
     16         if (txtTitle.Text.Trim().Length > 0)
     17         {
     18         }
     19         else
     20         {
     21             Jscript.Alert("标题不能为空");
     22             return "标题不能为空";
     23         }
     24         School.Model.BlogUserPic bumodel = new School.Model.BlogUserPic();
     25         School.BLL.BlogUserPic buBll = new School.BLL.BlogUserPic();
     26 
     27         //获取用户ID
     28         EncryptStr Encry = new EncryptStr();
     29         userID = Encry.Decrypt(HttpContext.Current.Request.Cookies["SchoolStudent"]["UserID"].ToString());
     30 
     31         //设置添加信息
     32         bumodel.PicTitle = Utils.ChkSQL(this.txtTitle.Text.Trim().ToString());
     33         bumodel.PicDesc = Utils.ChkSQL(this.txtPicDesc.Text.Trim().ToString());
     34         bumodel.addTime = DateTime.Now;
     35         bumodel.UserId = Utils.StrToInt(userID, 0);
     36         bumodel.uploadIP = DNTRequest.GetIP();
     37         bumodel.IsDel = 0;
     38         bumodel.IsCheck = 1;
     39         #endregion
     40         #region
     41         if (upImage.PostedFile != null)
     42         {
     43             HttpPostedFile myFile = upImage.PostedFile;
     44             int nFileLen = myFile.ContentLength;
     45             if (nFileLen == 0)
     46             {
     47                 Jscript.Alert("没有选择上传图片");
     48                 return "没有选择上传图片";
     49             }
     50             if (nFileLen > 2097152)
     51             {
     52                 Jscript.Alert("上传图片不能大于2MB");
     53                 return "上传图片不能大于2MB";
     54             }
     55             //获取upImage选择文件的扩展名
     56             string extendName = System.IO.Path.GetExtension(myFile.FileName).ToLower();
     57             //判断是否为图片格式
     58             if (extendName != ".jpg" && extendName != ".jpge" && extendName != ".gif" && extendName != ".bmp" && extendName != ".png")
     59             {
     60                 Jscript.Alert("图片格式不正确");
     61                 return "图片格式不正确";
     62             }
     63             byte[] myData = new Byte[nFileLen];
     64             myFile.InputStream.Read(myData, 0, nFileLen);
     65             sFilename = System.IO.Path.GetFileName(myFile.FileName);
     66             int file_append = 0;
     67             //检查当前文件夹下是否有同名图片,有则在文件名+1
     68             while (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename)))
     69             {
     70                 file_append++;
     71                 sFilename = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
     72              + file_append.ToString() + extendName;
     73             }
     74             System.IO.FileStream newFile = new System.IO.FileStream(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename),
     75                 System.IO.FileMode.Create, System.IO.FileAccess.Write);
     76             newFile.Write(myData, 0, myData.Length);
     77             newFile.Close();
     78             //以上为上传原图
     79             #region
     80             try
     81             {
     82                 //原图加载
     83                 using (System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename)))
     84                 {
     85                     //原图宽度和高度
     86                     int width = sourceImage.Width;
     87                     int height = sourceImage.Height;
     88                     int smallWidth;
     89                     int smallHeight;
     90                     //获取第一张绘制图片的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高)
     91                     if (((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight)
     92                     {
     93                         smallWidth = intThumbWidth;
     94                         smallHeight = intThumbWidth * height / width;
     95                     }
     96                     else
     97                     {
     98                         smallWidth = intThumbHeight * width / height;
     99                         smallHeight = intThumbHeight;
    100                     }
    101 
    102                     //判断缩略图在当前文件夹下是否同名称文件存在
    103                     file_append = 0;
    104                     sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) + extendName;
    105                     while (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sThumbFile)))
    106                     {
    107                         file_append++;
    108                         sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) + file_append.ToString() + extendName;
    109                     }
    110 
    111                     //缩略图保存的绝对路径
    112                     string smallImagePath = Server.MapPath(sSavePath) + sThumbFile;
    113                     //System.Web.HttpContext.Current.Server.MapPath(sSavePath) + sThumbFile;
    114                     //bumodel.PicUrl = Server.MapPath(smallImagePath);
    115                     bumodel.PicUrl = "/UploadBlogPhoto/" + userID + "/" + sThumbFile;//压缩过的图片
    116                     //smallImagePath;
    117                     //业务层 增加方法 bumodel是model
    118                     buBll.Add(bumodel);//添加相片
    119                     Response.Write("<script language='JavaScript'>alert('添加相片成功');window.location='BlogUserPic.aspx?userID=" + userID + "';</script>");
    120                     //Response.End();
    121                     //新建一个图板,以最小等比例压缩大小绘制原图
    122                     using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight))
    123                     {
    124                         //绘制中间图
    125                         using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
    126                         {
    127                             //高清,平滑
    128                             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    129                             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    130                             g.Clear(System.Drawing.Color.White);
    131                             g.DrawImage(
    132                                 sourceImage, new System.Drawing.Rectangle(00, smallWidth, smallHeight),
    133                                 new System.Drawing.Rectangle(00, width, height), System.Drawing.GraphicsUnit.Pixel);
    134                         }
    135                         //新建一个图板,以缩略图大小绘制中间图
    136                         using (System.Drawing.Image bitmap1 = new System.Drawing.Bitmap(intThumbWidth, intThumbHeight))
    137                         {
    138                             //绘制缩略图
    139                             using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1))
    140                             {
    141                                 //高清,平滑
    142                                 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    143                                 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    144                                 g.Clear(System.Drawing.Color.White);
    145                                 int lwidth = (smallWidth - intThumbHeight) / 2;
    146                                 int bheight = (smallHeight - intThumbHeight) / 2;
    147                                 g.DrawImage(bitmap, new Rectangle(00, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel);
    148                                 g.Dispose();
    149                                 bitmap1.Save(smallImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
    150                             }
    151                         }
    152                     }
    153 
    154                 }
    155             }
    156 
    157             catch
    158             {
    159                 //出错则删除 
    160                 System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename));
    161                 Jscript.Alert("图片格式不正确");
    162                 return "图片格式不正确";
    163             }
    164             #endregion
    165             //返回缩略图名称 
    166             return sThumbFile;
    167         }
    168         #endregion
    169         Jscript.Alert("没有选择图片");
    170         return "没有选择图片";
    171         #endregion
    172     }

    CS button控件事件

     1   /// <summary>
     2     /// 上传图片事件
     3     /// </summary>
     4     /// <param name="sender">sender</param>
     5     /// <param name="e">e</param>
     6     protected void btnSmbit_Click(object sender, EventArgs e)
     7     {
     8         //获取用户ID
     9         EncryptStr Encry = new EncryptStr();
    10         userID = Encry.Decrypt(HttpContext.Current.Request.Cookies["SchoolStudent"]["UserID"       ].ToString());
    11         //我们是根据用户ID生成一个文件夹,保存到单独的文件夹
    12         this.UpLoadImage(this.File1, "../UploadBlogPhoto/" + userID + "/""thumb_"600600);
    13     }

     前台代码

        <td>

                    添加相片:

                    <input id="File1" runat="server" type="file" />        

           <asp:Button ID="btnSmbit" runat="server" Text="提交" OnClick="btnSmbit_Click" /> 

                </td>

    作者:Mr S.R Lee
    出处:http://www.cnblogs.com/LeeYongze
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

  • 相关阅读:
    LeetCode——Generate Parentheses
    LeetCode——Best Time to Buy and Sell Stock IV
    LeetCode——Best Time to Buy and Sell Stock III
    LeetCode——Best Time to Buy and Sell Stock
    LeetCode——Find Minimum in Rotated Sorted Array
    Mahout实现基于用户的协同过滤算法
    使用Java对文件进行解压缩
    LeetCode——Convert Sorted Array to Binary Search Tree
    LeetCode——Missing Number
    LeetCode——Integer to Roman
  • 原文地址:https://www.cnblogs.com/LeeYongze/p/1745206.html
Copyright © 2011-2022 走看看