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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET實現上傳圖片并生成縮略圖的方法

ASP.NET實現上傳圖片并生成縮略圖的方法

2019-12-29 13:10happy664618843 ASP.NET教程

這篇文章主要介紹了ASP.NET實現上傳圖片并生成縮略圖的方法,提供了一個asp.net上傳圖片與生成縮略圖的方法,并給出了改進程序供大家對比分析,需要的朋友可以參考下

本文實例講述了ASP.NET實現上傳圖片并生成縮略圖的方法。分享給大家供大家參考,具體如下:

?
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
protected void bt_upload_Click(object sender, EventArgs e)
{
  //檢查上傳文件的格式是否有效
  if (this.UploadFile.PostedFile.ContentType.ToLower().IndexOf("image") < 0)
  {
   Response.Write("上傳圖片格式無效!");
   return;
  }
  //生成原圖
  Byte[] oFileByte = new byte[this.UploadFile.PostedFile.ContentLength];
  System.IO.Stream oStream = this.UploadFile.PostedFile.InputStream;
  System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);
  int oWidth = oImage.Width; //原圖寬度
  int oHeight = oImage.Height; //原圖高度
  int tWidth = 100; //設置縮略圖初始寬度
  int tHeight = 100; //設置縮略圖初始高度
  //按比例計算出縮略圖的寬度和高度
  if (oWidth >= oHeight)
  {
   tHeight = (int)Math.Floor(Convert.ToDouble(oHeight) * (Convert.ToDouble(tWidth) / Convert.ToDouble(oWidth)));
  }
  else
  {
   tWidth = (int)Math.Floor(Convert.ToDouble(oWidth) * (Convert.ToDouble(tHeight) / Convert.ToDouble(oHeight)));
  }
  //生成縮略原圖
  Bitmap tImage = new Bitmap(tWidth, tHeight);
  Graphics g = Graphics.FromImage(tImage);
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //設置高質量插值法
  g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//設置高質量,低速度呈現平滑程度
  g.Clear(Color.Transparent); //清空畫布并以透明背景色填充
  g.DrawImage(oImage, new Rectangle(0, 0, tWidth, tHeight), new Rectangle(0, 0, oWidth, oHeight), GraphicsUnit.Pixel);
  string oFullName = Server.MapPath(".") + "/image/" + "o" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存原圖的物理路徑
  string tFullName = Server.MapPath(".") + "/image/" + "t" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存縮略圖的物理路徑
  try
  {
   //以JPG格式保存圖片
   oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
   tImage.Save(tFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
  }
  catch (Exception ex)
  {
   throw ex;
  }
  finally
  {
   //釋放資源
   oImage.Dispose();
   g.Dispose();
   tImage.Dispose();
  }
 }
}

這里再補充一個改進方法:

?
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
#region 上傳圖片 并生成縮略圖
/// <summary>
/// 上傳圖片生成縮略圖
/// </summary>
/// <param name="originalImagePath">圖片源路徑</param>
/// <param name="thumbnailPath">縮略圖路徑(物理路徑)</param>
/// <param name="width">縮略圖寬度</param>
/// <param name="height">縮略圖高度</param>
/// <param name="mode">生成縮略圖的方式</param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode) {
  //從路徑中獲取源圖片的文件
  System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
  int towidth = width;
  int toheight = height;
  int x = 0;
   int y = 0;
  //獲取圖片的寬度
   int ow = image.Width;
  //獲取圖片的高度
   int oh = image.Height;
  //生成縮略圖的方式
   switch (mode) {
    case "HW":
    break;
    case "W"://指定寬度 高按比例
    toheight = originalImage.Height * width / originalImage.Width;
    break;
    case "H"://指定圖片的高度 寬按比例
    towidth = originalImage.Width * height / originalImage.Height;
    break;
    case "Cut"://如果為裁減模式 則不變形
    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
    {
     oh = originalImage.Height;
     //縮略圖片的寬度
     ow = originalImage.Height * towidth / toheight;
     y = 0;
     x = (originalImage.Width - ow) / 2;
    }
    else {
     ow = originalImage.Width;
     //縮略圖片的高度
     oh = originalImage.Width * toheight / towidth;
     x = 0;
     y(originalImage.Height - oh) / 2;
    }
    break;
    default: break;
   }
  //新建一個bmp圖片
   Bitmap bitmap = new Bitmap(towidth, toheight);
  //新建一個畫布 以BitMap 寬 高作為畫布的大小
   Graphics g = Graphics.FromImage(bitmap);
  //設置高質量插值法
   g.InterpolationMode = InterpolationMode.High;
  //以高質量 低速度 呈現
   g.SmoothingMode = SmoothingMode.HighQuality;
  //清空畫布 以白色背景色填充
   g.Clear(Color.Transparent);
   //在指定位置并且按指定大小繪制原圖片的指定部分
   g.DrawImage(originalImage,new Rectangle(towidth,toheight),new Rectangle(x,y,ow,oh),GraphicsUnit.Pixel);
   try
   {
    //以jpg格式保存縮略圖
    bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Jpeg);
   }
   catch (Exception ex)
   {
    throw ex;
   }
   finally {
    //釋放資源
    originalImage.Dispose();
    bitmap.Dispose();
    g.Dispose();
   }
}
#endregion

希望本文所述對大家asp.net程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美另类老女人 | 精品国产免费第一区二区三区日韩 | 婷婷伊人综合亚洲综合网 | 我强进了老师身体在线观看 | 干操视频 | 欧洲久久 | 久久国产综合精品欧美 | 国产综合色在线视频区色吧图片 | 香蕉免费看一区二区三区 | 亚洲国产在 | 国产毛片在线高清视频 | 国产成人在线视频 | 日本高清视频一区二区 | 四虎在线永久免费视频网站 | 免费成年网站 | 午夜无码国产理论在线 | 草莓绿巨人香蕉茄子芭乐 | 欧美图片另类小说综合 | 亚洲国内精品久久 | 非洲一级毛片又粗又长aaaa | 国产高清在线播放免费观看 | 亚洲国产韩国欧美在线不卡 | 亚洲天堂2015 | 国产成人精品福利色多多 | 久久人妻少妇嫩草AV無碼 | 三级午夜宅宅伦不卡在线 | hd性欧美俱乐部中文 | freesex 18 19处xx| 久久无码人妻中文国产 | 美女张开腿让我了一夜 | 亚洲国产日韩欧美一区二区三区 | 5g影院天天影院天天爽影院网站 | 亚洲欧美在线观看一区二区 | 果冻传媒ⅹxxxxxhd | 国产精品亚洲一区二区久久 | 精品国偷自产在线 | 亚洲人成综合在线播放 | 日本一区三区 | 近亲乱中文字幕 | 亚洲成a人不卡在线观看 | 四虎影视在线影院在线观看观看 |