一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - C# - C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能示例

C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能示例

2022-03-10 14:08changuncle C#

這篇文章主要介紹了C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#圖片上傳、保存、水印、縮略圖等相關(guān)操作技巧,需要的朋友可以參考下

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

伴隨移動(dòng)設(shè)備地普及,處理圖片、視頻等需求也變得越來(lái)越基礎(chǔ),這里介紹的是圖片的存儲(chǔ)。

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

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

前臺(tái)代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<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>

后臺(tái)代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
private string UploadImage(HttpContext context)
{
  try
  {
    System.IO.Stream stream = context.Request.Files["icon"].InputStream;
    //返回的圖片路徑可以存儲(chǔ)在數(shù)據(jù)庫(kù)中
    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 + "\\" + DateTime.Now.Year + "\\" + DateTime.Now.Month + "\\" + DateTime.Now.Day + "\\");
    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 + "\\" + DateTime.Now.Year + "\\" + DateTime.Now.Month + "\\" + DateTime.Now.Day + "\\");
    string imageUrl = "/" + folderName + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";
    System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(GetFalse);
    //數(shù)據(jù)源來(lái)自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 + "\\" + DateTime.Now.Year + "\\" + DateTime.Now.Month + "\\" + DateTime.Now.Day + "\\");
    string imageUrl = "/" + folderName + "/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";
    System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(GetFalse);
    //數(shù)據(jù)源來(lái)自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">水印文字,如果是多行用分號(hào)隔開(kāi)</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 + ";" + "當(dāng)前時(shí)間:" + 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;
}

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。

原文鏈接:https://blog.csdn.net/xiaouncle/article/details/54883327

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品第一国产综合 | 99在线精品免费视频九九视 | 日韩欧美中文字幕一区二区三区 | 91精品啪在线观看国产线免费 | 国产亚洲精品九九久在线观看 | bt天堂午夜国产精品 | 日韩手机在线视频 | 男人猛进猛出女人下面视频 | 亚洲乱码一二三四区国产 | 扒开腚眼子视频大全 | 日韩中文在线 | 能免费观看的韩剧 | 欧美艳星julnaann | 青青草成人影院 | 国产激情在线 | 天天久久影视色香综合网 | 天天草天天 | 全肉np巨肉一女np高h双龙 | 亚洲AV国产国产久青草 | sese在线| 精品性久久 | 欧美成人momandson | 国产精品久久久久久久久免费 | 亚洲v成人天堂影视 | 国产v日韩v欧美v精品专区 | 息与子中文字幕完整在线 | 奇米影视在线视频8888 | 精品亚洲一区二区三区在线播放 | 51香蕉视频 | 色国产视频 | 白丝校花好湿好紧 | 2020年新四虎免费 | 亚洲精品国产精品国自产观看 | 国产成人综合亚洲一区 | 青草青草久热精品视频在线网站 | 青青91 | 国产偷窥| 成人在线第一页 | 青草国产在线视频 | 国产高清精品自在久久 | 日韩网新片免费 |