图片上传 自动创建文件夹并重命名(带缩略图)
后台:
Controller Code
[HttpPost] public ActionResult WanSell_UploadPicture(ProductGalleryModels picturegm) { var users = Session["onlineUsers"] as List<CurrentOnlineUsers>; string usename = users[0].CUserName.ToString(); //获取用户名 string randomName = DateTime.Now.ToFileTime().ToString(); //系统当前时间为图片名称 HttpPostedFileBase file = Request.Files["fileToUpload"];//获取客户端上传的图片 string pictureName = file.FileName; //上传图片的原名 string extensionName = System.IO.Path.GetExtension(pictureName);//获取扩展名 int randomcode = BaseRandom.GetRandom(1000, 9999); //产生随机数 string newName = string.IsNullOrEmpty(pictureName.Trim()) ? "" : usename + randomcode + randomName + System.IO.Path.GetExtension(pictureName); //重命名图片 if (picturegm.ImgDescription != null && picturegm.ImgDescription != "") //附加判断图片描述是否为空 { if (extensionName.ToLower() == "jpg" || extensionName.ToLower() == "bmp" || extensionName.ToLower() == "gif") //判断图片格式 { string savePath = HttpContext.Server.MapPath("~/Content/Uploads/img/" + usename); //原图图片保存位置 string smalfilepath = Server.MapPath("~/Content/Uploads/smallimg/" + usename); //缩略图图片保存位置 if (!System.IO.Directory.Exists(savePath)) { //如果路径不存在创建新文件夹 System.IO.Directory.CreateDirectory(savePath); } if (!System.IO.Directory.Exists(smalfilepath)) { System.IO.Directory.CreateDirectory(smalfilepath); } file.SaveAs(savePath + '/' + newName); //将上传的文件保存到指定的目录。 FileFolder.MakeThumbnail(savePath + '/' + newName, smalfilepath + '/' + newName, 68, 68, "Cut"); ViewData["messageBox"] = "上传成功"; return View("~/Views/RechargeMoney/RechargeSuccess.cshtml"); } else { ModelState.AddModelError("", "图片格式应为jpg/bmp/gif"); } } else { ModelState.AddModelError("", "请填写图片描述"); } return View("~/Views/IWantSell/WanSell_UploadPicture.cshtml"); } #endregion
缩略图类:
1 #region 生成缩略图 2 3 /**/ 4 5 /// <summary> 6 7 /// 生成缩略图 8 9 /// </summary> 10 11 /// <param name="originalImagePath">源图路径(物理路径)</param> 12 13 /// <param name="thumbnailPath">缩略图路径(物理路径)</param> 14 15 /// <param name="width">缩略图宽度</param> 16 17 /// <param name="height">缩略图高度</param> 18 19 /// <param name="mode">生成缩略图的方式</param> 20 21 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode) 22 23 { 24 25 System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath); 26 27 int towidth = width; 28 29 int toheight = height; 30 31 int x = 0; 32 33 int y = 0; 34 35 int ow = originalImage.Width; 36 37 int oh = originalImage.Height; 38 39 switch (mode) 40 41 { 42 43 case "HW"://指定高宽缩放(可能变形) 44 45 break; 46 47 case "W"://指定宽,高按比例 48 49 toheight = originalImage.Height * width / originalImage.Width; 50 51 break; 52 53 case "H"://指定高,宽按比例 54 55 towidth = originalImage.Width * height / originalImage.Height; 56 57 break; 58 59 case "Cut"://指定高宽裁减(不变形) 60 61 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight) 62 63 { 64 65 oh = originalImage.Height; 66 67 ow = originalImage.Height * towidth / toheight; 68 69 y = 0; 70 71 x = (originalImage.Width - ow) / 2; 72 73 } 74 75 else 76 77 { 78 79 ow = originalImage.Width; 80 81 oh = originalImage.Width * height / towidth; 82 83 x = 0; 84 85 y = (originalImage.Height - oh) / 2; 86 87 } 88 89 break; 90 91 default: 92 93 break; 94 95 } 96 97 //新建一个bmp图片 98 99 System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight); 100 101 //新建一个画板 102 103 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); 104 105 //设置高质量插值法 106 107 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 108 109 //设置高质量,低速度呈现平滑程度 110 111 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 112 113 //清空画布并以透明背景色填充 114 115 g.Clear(System.Drawing.Color.Transparent); 116 117 //在指定位置并且按指定大小绘制原图片的指定部分 118 119 g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight), 120 121 new System.Drawing.Rectangle(x, y, ow, oh), 122 123 System.Drawing.GraphicsUnit.Pixel); 124 125 try 126 127 { 128 129 //以jpg格式保存缩略图 130 131 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); 132 133 } 134 135 catch (System.Exception e) 136 137 { 138 139 throw e; 140 141 } 142 143 finally 144 145 { 146 147 originalImage.Dispose(); 148 149 bitmap.Dispose(); 150 151 g.Dispose(); 152 153 } 154 155 } 156 157 #endregion
浙公网安备 33010602011771号