国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現的上傳圖片、保存圖片、加水印、生成縮略圖功能示例

2020-01-24 00:09:41
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現的上傳圖片、保存圖片、加水印、生成縮略圖功能。分享給大家供大家參考,具體如下:

伴隨移動設備地普及,處理圖片、視頻等需求也變得越來越基礎,這里介紹的是圖片的存儲。

上傳圖片必須使用form表單提交的方式,我只知道這一種方法,如果大家知道其他方法的話請留言。

保存圖片、加水印和生成縮略圖這三種功能最好各自放在單獨的方法中,盡量降低耦合度,提高代碼復用程度,除此之外我們平常寫代碼是也要盡量做到方法功能的唯一性。

前臺代碼:

<form method="POST" enctype="multipart/form-data" action="UploadImg.ashx">  <table>    <tr>      <td>func:</td>      <td><input type="text" name="func"/></td>    </tr>    <tr>      <td>用戶Id:</td>      <td><input type="text" name="userId"/></td>    </tr>    <tr>      <td>頭像:</td>      <td><input type="file" name="icon"/></td>    </tr>    <tr>      <td>水印:</td>      <td><input type="text" name="waterMark"/></td>    </tr>  </table>  <input type="submit" value="提交"/></form>

后臺代碼:

private string UploadImage(HttpContext context){  try  {    System.IO.Stream stream = context.Request.Files["icon"].InputStream;    //返回的圖片路徑可以存儲在數據庫中    string imageUrl = SaveImage(stream, "Icon", "蟈蟈");    string thumbnailImageUrl = SaveThumbnailImage(stream, "Icon");    string thumbnailImageUrlWithWatermark = SaveThumbnailImage(ConfigurationManager.AppSettings["AttachmentsDirectory"] + imageUrl, "Icon");    return "上傳成功!";  }  catch (Exception ex)  {    return "上傳失敗!";  }}private string SaveImage(Stream stream, string folderName, string waterMark){  try  {    string fileName = Guid.NewGuid() + ".jpg";    string path = ConfigurationManager.AppSettings["AttachmentsDirectory"];    path = Path.Combine(path, folderName + "http://" + DateTime.Now.Year + "http://" + DateTime.Now.Month + "http://" + DateTime.Now.Day + "http://");    string imageUrl = "/" + folderName + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";    if (!string.IsNullOrEmpty(waterMark))    {      Image imgSource = Image.FromStream(stream);      AddWatermarkAndSave(path, fileName, waterMark, imgSource, imgSource.Height - 300, 10, Color.Red,        new Font("宋體", 40));    }    else    {      byte[] buffer = new byte[stream.Length];      stream.Read(buffer, 0, buffer.Length);      if (!Directory.Exists(path))      {        Directory.CreateDirectory(path);      }      System.IO.FileStream fs = new System.IO.FileStream(path + fileName, System.IO.FileMode.OpenOrCreate,        System.IO.FileAccess.Write);      fs.Write(buffer, 0, buffer.Length);      fs.Flush();      fs.Close();    }    return imageUrl + fileName;  }  catch (Exception ex)  {    return "";  }}private string SaveThumbnailImage(Stream stream, string folderName){  try  {    string fileName = Guid.NewGuid() + ".jpg";    string path = ConfigurationManager.AppSettings["AttachmentsDirectory"];    path = Path.Combine(path, folderName + "http://" + DateTime.Now.Year + "http://" + DateTime.Now.Month + "http://" + DateTime.Now.Day + "http://");    string imageUrl = "/" + folderName + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";    System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(GetFalse);    //數據源來自Stream    Image image = System.Drawing.Bitmap.FromStream(stream);    System.Drawing.Image thumbnailImage = image.GetThumbnailImage(64, 64, myCallback, IntPtr.Zero);    thumbnailImage.Save(path + fileName);    thumbnailImage.Dispose();    return imageUrl + fileName;  }  catch (Exception ex)  {    return "";  }}private string SaveThumbnailImage(string originalFileName, string folderName){  try  {    string fileName = Guid.NewGuid() + ".jpg";    string path = ConfigurationManager.AppSettings["AttachmentsDirectory"];    path = Path.Combine(path, folderName + "http://" + DateTime.Now.Year + "http://" + DateTime.Now.Month + "http://" + DateTime.Now.Day + "http://");    string imageUrl = "/" + folderName + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";    System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(GetFalse);    //數據源來自File    Image image = System.Drawing.Bitmap.FromFile(originalFileName);    System.Drawing.Image thumbnailImage = image.GetThumbnailImage(64, 64, myCallback, IntPtr.Zero);    thumbnailImage.Save(path + fileName);    thumbnailImage.Dispose();    return imageUrl + fileName;  }  catch (Exception ex)  {    return "";  }}private bool GetFalse(){  return false;}/// <summary>/// 圖片加文字水印/// </summary>/// <param name="fileName"> </param>/// <param name="text">水印文字,如果是多行用分號隔開</param>/// <param name="img">圖片</param>/// <param name="paddingTop">上邊距</param>/// <param name="paddingLeft">左邊距</param>/// <param name="textColor">文字顏色</param>/// <param name="textFont">字體</param>/// <param name="path">保存地址</param>/// <returns></returns>private bool AddWatermarkAndSave(string path, string fileName, string text, Image img,      int paddingTop, int paddingLeft, Color textColor, Font textFont){  text = text + ";" + "當前時間:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm");  if (!Directory.Exists(path))  {    Directory.CreateDirectory(path);  }  textFont = new Font("宋體", 19);  Bitmap bm = new Bitmap(img);  System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);  System.Drawing.Brush b = new SolidBrush(textColor);  string[] str = text.Split(';');  for (int i = 0; i < str.Length; i++)    g.DrawString(str[i], textFont, b, paddingLeft, paddingTop + 33 * i);  g.Dispose();  bm.Save(path + fileName, ImageFormat.Jpeg);  bm.Dispose();  return true;}

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#圖片操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太湖县| 鹤山市| 西畴县| 娱乐| 桦甸市| 鄢陵县| 阿尔山市| 沙湾县| 铜梁县| 郸城县| 保山市| 噶尔县| 石棉县| 定结县| 华阴市| 宁南县| 东明县| 克什克腾旗| 嵩明县| 淮滨县| 炎陵县| 安泽县| 正宁县| 高青县| 斗六市| 方城县| 茶陵县| 周口市| 裕民县| 兴海县| 河间市| 呼玛县| 靖宇县| 镇沅| 西安市| 迁西县| 略阳县| 黑河市| 蓝山县| 新乡市| 吐鲁番市|