C# webform上传图片并生成缩略图
生活随笔
收集整理的這篇文章主要介紹了
C# webform上传图片并生成缩略图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其實里面寫的很亂,包括修改文件名什么的都沒有仔細去寫,主要是想記錄下縮略圖生成的幾種方式?,大家明白就好!
1 void UpImgs() 2 { 3 if (FileUpload1.HasFile) 4 { 5 string fileContentType = FileUpload1.PostedFile.ContentType; 6 if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg") 7 { 8 string name = FileUpload1.PostedFile.FileName; // 客戶端文件路徑 9 10 FileInfo file = new FileInfo(name); 11 //string fileName = CreatFileName(file.Name)+"_"+file.Name; // 文件名稱 12 //string fileName_s = "s_" + CreatFileName(file.Name) + "_" + file.Name; // 縮略圖文件名稱 13 14 string fileName = CreatFileName(file.Name); // 文件名稱 15 string fileName_s = "s_" + CreatFileName(file.Name); // 縮略圖文件名稱 16 17 18 string webFilePath = Server.MapPath("../file/" + fileName); // 服務器端文件路徑 19 string webFilePath_s = Server.MapPath("../file/" + fileName_s); // 服務器端縮略圖路徑 20 21 22 string dbname = "~/file/" + fileName;//存放到<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>數據庫</a>里的相對路徑 23 string dbnames = "~/file/" + fileName_s;//存放到數據庫里的相對路徑 24 25 if (!File.Exists(webFilePath)) 26 { 27 try 28 { 29 FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件 30 MakeThumbnail(webFilePath, webFilePath_s, 200, 160, "Cut"); // 生成縮略圖方法 31 //Label1.Text = "提示:文件“" + fileName + "”成功上傳,并生成“" + fileName_s + "”縮略圖,文件類型為:" + FileUpload1.PostedFile.ContentType + ",文件大小為:" + FileUpload1.PostedFile.ContentLength + "B"; 32 Label1.Text = "提示:文件“" + dbname + "”成功上傳,并生成“" + dbnames + "”縮略圖,文件類型為:" + FileUpload1.PostedFile.ContentType + ",文件大小為:" + FileUpload1.PostedFile.ContentLength + "B"; 33 34 35 File.Delete(webFilePath);//刪除源文件,在這我把源文件刪了,只保留了縮小后的圖片 36 37 38 39 } 40 catch (Exception ex) 41 { 42 Label1.Text = "提示:文件上傳失敗,失敗原因:" + ex.Message; 43 44 } 45 } 46 else 47 { 48 Label1.Text = "提示:文件已經存在,請重命名后上傳"; 49 50 } 51 } 52 else 53 { 54 Label1.Text = "提示:文件類型不符"; 55 56 } 57 } 58 } 59 /**//// 60 /// 生成縮略圖 61 /// 62 /// 源圖路徑(物理路徑) 63 /// 縮略圖路徑(物理路徑) 64 /// 縮略圖寬度 65 /// 縮略圖高度 66 /// 生成縮略圖的方式 67 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode) 68 { 69 System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath); 70 71 int towidth = width; 72 int toheight = height; 73 74 int x = 0; 75 int y = 0; 76 int ow = originalImage.Width; 77 int oh = originalImage.Height; 78 79 switch (mode) 80 { 81 case "HW"://指定高寬縮放(可能變形) 82 break; 83 case "W"://指定寬,高按比例 84 toheight = originalImage.Height * width / originalImage.Width; 85 break; 86 case "H"://指定高,寬按比例 87 towidth = originalImage.Width * height / originalImage.Height; 88 break; 89 case "Cut"://指定高寬裁減(不變形) 90 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight) 91 { 92 oh = originalImage.Height; 93 ow = originalImage.Height * towidth / toheight; 94 y = 0; 95 x = (originalImage.Width - ow) / 2; 96 } 97 else 98 { 99 ow = originalImage.Width; 100 oh = originalImage.Width * height / towidth; 101 x = 0; 102 y = (originalImage.Height - oh) / 2; 103 } 104 break; 105 default: 106 break; 107 } 108 109 //新建一個bmp圖片 110 System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight); 111 112 //新建一個畫板 113 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap); 114 115 //設置高質量插值法 116 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 117 118 //設置高質量,低速度呈現平滑程度 119 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 120 121 //清空畫布并以透明背景色填充 122 g.Clear(System.Drawing.Color.Transparent); 123 124 //在指定位置并且按指定大小繪制原圖片的指定部分 125 g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight), 126 new System.Drawing.Rectangle(x, y, ow, oh), 127 System.Drawing.GraphicsUnit.Pixel); 128 129 try 130 { 131 //以jpg格式保存縮略圖 132 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); 133 } 134 catch (System.Exception e) 135 { 136 throw e; 137 } 138 finally 139 { 140 originalImage.Dispose(); 141 bitmap.Dispose(); 142 g.Dispose(); 143 } 144 } 145 146 string CreatFileName(string fileName) 147 { 148 149 DateTime now = DateTime.Now; 150 151 string str = 152 153 now.Year.ToString() + 154 155 now.Month.ToString() + 156 157 now.Day.ToString() + 158 159 now.Hour.ToString() + 160 161 now.Minute.ToString() + 162 163 now.Second.ToString() + 164 165 fileName; 166 167 return str; 168 169 }
?
轉載于:https://www.cnblogs.com/felix-wang/p/6255313.html
總結
以上是生活随笔為你收集整理的C# webform上传图片并生成缩略图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最便宜的奔驰多少钱?
- 下一篇: 维生素e多少钱啊?