• 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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

  • 相关阅读:
    [J2ME Q&A]MMAPI的Cannot parse this type of AMR异常之讨论
    FM91.5的EasyMorning节目爱听吗?
    [EntLibFAQ]“不允许所请求的注册表访问权”的解释[0508Update]
    亮出你的组合竞争力的王牌
    隔离,隔离,再隔离!
    zuma三阶段论和技术道路[一]
    分享下我们部门内部知识点培训教程[SIP/J2ME/Setup/LoadRunner/Domino][0706Up]
    [Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException
    通过讲课来建立自己的知识系统
    j2medev“用户界面和多媒体”版面问题整理[0407更新]
  • 原文地址:https://www.cnblogs.com/LeeYongze/p/1745206.html
Copyright © 2020-2023  润新知