亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > Asp.net mvc實(shí)時(shí)生成縮率圖到硬盤

Asp.net mvc實(shí)時(shí)生成縮率圖到硬盤

熱門標(biāo)簽:地圖標(biāo)注的公司有哪些 地圖定位圖標(biāo)標(biāo)注 遂寧市地圖標(biāo)注app 濮陽(yáng)外呼電銷系統(tǒng)怎么樣 地圖標(biāo)注專業(yè)團(tuán)隊(duì) 天心智能電銷機(jī)器人 代理接電話機(jī)器人如何取消 塔城代理外呼系統(tǒng) 400電話辦理哪家性價(jià)比高

對(duì)于縮率圖的處理是在圖片上傳到服務(wù)器之后,同步生成兩張不同尺寸的縮率供前端調(diào)用,剛開始還能滿足需求,慢慢的隨著前端展示的多樣化,縮率圖已不能前端展示的需求,所以考慮做一個(gè)實(shí)時(shí)生成圖片縮率圖服務(wù)。

每次調(diào)用實(shí)時(shí)生成縮率圖,不緩存著實(shí)有點(diǎn)浪費(fèi),所以在生成縮率的同時(shí)緩存到硬盤一份,效率提高很多。

之前從網(wǎng)上看了一下有人用nginx + lua實(shí)現(xiàn)的,效率那是沒(méi)什么可說(shuō)的,但是時(shí)間緊迫,自己也沒(méi)時(shí)間去研究,所以暫時(shí)先用aps.net mvc4來(lái)實(shí)現(xiàn) 一個(gè),以后有時(shí)間了,再慢慢修改。

用自己熟悉的.net性能可能差那么一點(diǎn)點(diǎn),但是實(shí)現(xiàn)速度快,保證可以在極端的時(shí)間內(nèi)上線,并且在功能上更強(qiáng)。

思路很簡(jiǎn)單,就是根據(jù)請(qǐng)求,判斷需要的縮率圖是否已存在于硬盤上,如果有直接返回,沒(méi)有則下載原圖,并生成縮率圖到本地,返回給客戶端。

下面直接粘貼代碼片段:

/// summary>
 /// 生成圖片縮率圖Action
 /// /summary>
 /// param name="p">原圖url/param>
 /// param name="id">圖片尺寸以及生成縮率圖的類型/param>
 /// returns>/returns>
 [ValidateInput(false)]
 public ActionResult Index(string p, string id)
 {
  if (string.IsNullOrEmpty(p))
  {
  return new HttpStatusCodeResult(404);
  }

  string oPath = Regex.Replace(p, @"http[s]?://(.*?)/", "/", RegexOptions.IgnoreCase);
  int? oWidth = 200, oHeight = 200;
  int cutMode = 3;
  string pPath;
  string oDir;

  if (!string.IsNullOrEmpty(id))
  {
  string[] ss = id.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
  if (ss.Length  2)
  {
   return new HttpStatusCodeResult(404);
  }
  if (ss.Length > 2)
  {
   cutMode = int.Parse(ss[2]);
  }
  oPath = oPath.Insert(oPath.LastIndexOf('/') + 1, string.Format("{0}_{1}_{2}_", ss[0], ss[1], cutMode));
  oWidth = int.Parse(ss[0]);
  oHeight = int.Parse(ss[1]);
  }

  pPath = Server.MapPath(oPath);
  oDir = Path.GetDirectoryName(pPath);

  if (!System.IO.File.Exists(pPath))
  {
  byte[] imagebytes = FileHelper.DownLoadFile(p);
  if (!Directory.Exists(oDir))
  {
   Directory.CreateDirectory(oDir);
  }
  FileHelper.MakeThumbnail(FileHelper.BytToImg(imagebytes), oWidth.Value, oHeight.Value, (ThumbnailMode)cutMode, pPath, true);
  }

  return File(pPath, FileHelper.GetContentTypeByExtension(Path.GetExtension(pPath).ToLower()));
 }

輔助方法:

 public class FileHelper
 {
  /// summary>
 /// 圖片后綴和ContentType對(duì)應(yīng)字典
 /// /summary>
 static Dictionarystring, string> extensionContentTypeDic;

 static FileHelper()
 {
  if (extensionContentTypeDic == null)
  {
  //.jpg", ".png", ".gif", ".jpeg
  extensionContentTypeDic = new Dictionarystring, string>();
  extensionContentTypeDic.Add(".jpg", "image/jpeg");
  extensionContentTypeDic.Add(".png", "image/png");
  extensionContentTypeDic.Add(".gif", "image/gif");
  extensionContentTypeDic.Add(".jpeg", "image/jpeg");
  }
 }
 /// summary>
 /// 根據(jù)后綴名獲取extension
 /// /summary>
 /// param name="extension">/param>
 /// returns>/returns>
 public static string GetContentTypeByExtension(string extension)
 {
  if (extensionContentTypeDic.ContainsKey(extension))
  {
  return extensionContentTypeDic[extension];
  }
  return null;
 }

 /// summary > 
 /// 將Image對(duì)象轉(zhuǎn)化成二進(jìn)制流 
 /// /summary > 
 /// param name="image" > /param > 
 /// returns > /returns > 
 public static byte[] ImageToByteArray(Image image)
 {
  MemoryStream imageStream = new MemoryStream();
  Bitmap bmp = new Bitmap(image.Width, image.Height);
  Graphics g = Graphics.FromImage(bmp);
  g.DrawImage(image, new System.Drawing.Rectangle(0, 0, image.Width, image.Height));
  try
  {
  bmp.Save(imageStream, image.RawFormat);
  }
  catch (Exception e)
  {

  bmp.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
  }
  byte[] byteImg = imageStream.GetBuffer();
  bmp.Dispose();
  g.Dispose();
  imageStream.Close();
  return byteImg;
 }

 /// summary> 
 /// 字節(jié)流轉(zhuǎn)換成圖片 
 /// /summary> 
 /// param name="byt">要轉(zhuǎn)換的字節(jié)流/param> 
 /// returns>轉(zhuǎn)換得到的Image對(duì)象/returns> 
 public static Image BytToImg(byte[] byt)
 {
  MemoryStream ms = new MemoryStream(byt);
  Image img = Image.FromStream(ms);
  ms.Close();
  return img;
 }

 /// summary>
 /// 生成縮率圖
 /// /summary>
 /// param name="originalImage">原始圖片Image/param>
 /// param name="width">縮率圖寬/param>
 /// param name="height">縮率圖高/param>
 /// param name="mode">生成縮率圖的方式/param>
 /// param name="thumbnailPath">縮率圖存放的地址/param>
 public static Image MakeThumbnail(Image originalImage, int width, int height, ThumbnailMode mode, string thumbnailPath, bool isSave = true)
 {
  int towidth = width;
  int toheight = height;

  int x = 0;
  int y = 0;
  int ow = originalImage.Width;
  int oh = originalImage.Height;
  switch (mode)
  {
  case ThumbnailMode.HW://指定高寬縮放(可能變形)   
   break;
  case ThumbnailMode.W://指定寬,高按比例   
   toheight = originalImage.Height * width / originalImage.Width;
   break;
  case ThumbnailMode.H://指定高,寬按比例 
   towidth = originalImage.Width * height / originalImage.Height;
   break;
  case ThumbnailMode.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 * height / towidth;
   x = 0;
   y = (originalImage.Height - oh) / 2;
   }
   break;

  default:
   break;
  }

  //新建一個(gè)bmp圖片 
  System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
  //新建一個(gè)畫板 
  Graphics g = System.Drawing.Graphics.FromImage(bitmap);
  //設(shè)置高質(zhì)量插值法 
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  //設(shè)置高質(zhì)量,低速度呈現(xiàn)平滑程度 
  g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  //清空畫布并以透明背景色填充 
  g.Clear(Color.Transparent);
  //在指定位置并且按指定大小繪制原圖片的指定部分 
  g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
  new Rectangle(x, y, ow, oh),
  GraphicsUnit.Pixel);
  if (!isSave)
  {
  return bitmap;
  }
  try
  {
  //以jpg格式保存縮略圖 
  //bitmap.Save(thumbnailPath, bitmap.RawFormat);
  bitmap.Save(thumbnailPath, ImageFormat.Jpeg);
  return bitmap;

  }
  catch (System.Exception e)
  {
  throw e;
  }
  finally
  {
  originalImage.Dispose();
  bitmap.Dispose();
  g.Dispose();
  }
  return null;
 }


 /// summary>
 /// 下載指定文件
 /// /summary>
 /// param name="remoteUrl">/param>
 /// param name="ss">/param>
 public static byte[] DownLoadFile(string remoteUrl)
 {
  WebClient wc = new WebClient();
  try
  {
  return wc.DownloadData(remoteUrl);
  }
  catch (Exception e)
  {
  throw new Exception("下載文件失敗");
  }
 }

 }

 public enum ThumbnailMode
 {
 /// summary>
 /// 指定高寬縮放(可能變形)
 /// /summary>
 HW,
 /// summary>
 /// 指定高,寬按比例
 /// /summary>
 H,
 /// summary>
 /// 指定寬,高按比例
 /// /summary>
 W,
 /// summary>
 /// 指定高寬裁減(不變形) 
 /// /summary>
 Cut,

 }

 

訪問(wèn)方式:

http://www.souji8.com/Home/Index/{width}_{height}_{ThumMode}?p={imageUrl}

{imageUrl}:目標(biāo)圖片地址

{ThumMode}: 1:指定高寬按比例、2:指定寬,高按比例、3:指定高寬裁減(不變形)

{Width}:期望圖片寬

{Height}:期望圖片高

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

您可能感興趣的文章:
  • ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之文件夾實(shí)現(xiàn)
  • asp.net 網(wǎng)絡(luò)硬盤實(shí)現(xiàn)分析
  • ASP.NET+XML打造網(wǎng)絡(luò)硬盤原理分析
  • ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之兩重要類代碼
  • ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之查看文件夾實(shí)現(xiàn)代碼
  • ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之上傳文件實(shí)現(xiàn)代碼
  • ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之下載或在線查看實(shí)現(xiàn)代碼
  • ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之刪除文件夾實(shí)現(xiàn)代碼

標(biāo)簽:麗江 婁底 本溪 河南 宜春 汕頭 重慶 吉林

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Asp.net mvc實(shí)時(shí)生成縮率圖到硬盤》,本文關(guān)鍵詞  Asp.net,mvc,實(shí)時(shí),生成,縮率,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Asp.net mvc實(shí)時(shí)生成縮率圖到硬盤》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Asp.net mvc實(shí)時(shí)生成縮率圖到硬盤的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产综合91天堂亚洲国产| 久久国产精品永久免费网站| 国产麻豆精品免费密入口| 欧美日本免费| 日韩中文字幕一区二区不卡| 黄视频网站免费| 国产视频一区二区在线播放| 一本高清在线| 毛片高清| 高清一级片| 国产麻豆精品高清在线播放| 亚洲女人国产香蕉久久精品| 日韩专区在线播放| 国产不卡福利| 九九久久99综合一区二区| 色综合久久天天综合观看| 九九精品影院| 成人影院一区二区三区| 可以免费看毛片的网站| 欧美激情一区二区三区视频 | 亚欧成人毛片一区二区三区四区 | 欧美爱爱网| 国产成人精品综合| 免费国产一级特黄aa大片在线| 韩国毛片| 91麻豆国产| 青青青草影院 | 久草免费在线视频| 韩国三级一区| 青青青草影院 | 日韩欧美一二三区| 99久久精品国产高清一区二区| 国产视频一区二区在线播放| 日本伦理片网站| 色综合久久天天综合绕观看| 人人干人人草| 国产一区二区精品久久91| 亚洲天堂在线播放| 99色视频| 黄视频网站免费观看| 日本在线不卡免费视频一区| 午夜在线亚洲| 免费一级生活片| 精品久久久久久综合网| 日韩专区第一页| 久久精品人人做人人爽97| 精品视频在线看| 久久国产精品永久免费网站| 九九久久99综合一区二区| 国产91丝袜在线播放0| 91麻豆tv| 亚欧乱色一区二区三区| 国产伦久视频免费观看视频| 天堂网中文在线| 国产不卡福利| 国产一区二区精品久久91| 久久国产影院| 国产综合成人观看在线| 国产不卡在线观看视频| 日韩专区第一页| 欧美激情伊人| 日韩中文字幕一区| 国产麻豆精品视频| 九九热国产视频| 麻豆网站在线看| 天堂网中文字幕| 日日夜人人澡人人澡人人看免| 精品国产一区二区三区国产馆| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日韩免费在线观看视频| 亚洲天堂免费观看| 国产美女在线观看| 国产91精品露脸国语对白| 国产91丝袜在线播放0| 久久99中文字幕| 四虎论坛| 色综合久久天天综合| 91麻豆精品国产自产在线观看一区| 黄色福利| 日日夜人人澡人人澡人人看免| 四虎影视久久| 韩国三级视频网站| 亚洲 激情| 国产不卡福利| 超级乱淫黄漫画免费| 欧美另类videosbestsex视频| 黄色福利| 国产精品123| 成人高清视频在线观看| 欧美18性精品| 国产一区二区福利久久| 青青久久国产成人免费网站| 亚洲天堂免费| 91麻豆国产| 国产一级生活片| 免费国产在线视频| 欧美另类videosbestsex高清| 成人高清视频免费观看| 亚欧成人毛片一区二区三区四区 | 香蕉视频久久| 韩国三级视频在线观看| 国产网站在线| 毛片成人永久免费视频| 韩国毛片基地| 深夜做爰性大片中文| 精品在线观看国产| 黄色免费三级| 日本免费乱理伦片在线观看2018| 国产不卡高清在线观看视频| 日韩在线观看免费| 国产成人精品综合久久久| a级毛片免费观看网站| 韩国毛片免费| 亚洲精品永久一区| 黄色免费网站在线| 天堂网中文字幕| 午夜精品国产自在现线拍| 亚洲精品中文字幕久久久久久| 日本免费乱理伦片在线观看2018| 国产精品自拍在线| 日韩av片免费播放| 久久精品免视看国产明星| 国产视频在线免费观看| 日韩在线观看视频黄| 国产麻豆精品| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品国产一区二区三区久| 国产一区精品| 久久99中文字幕久久| 精品久久久久久综合网| 四虎久久精品国产| 国产一区二区精品| 亚洲 男人 天堂| 成人av在线播放| 久久精品道一区二区三区| 天天色成人| 麻豆污视频| 久久99欧美| 国产欧美精品午夜在线播放| 日韩专区第一页| 夜夜操天天爽| 成人高清视频在线观看| 青青久在线视频| 成人av在线播放| 欧美大片毛片aaa免费看| 香蕉视频一级| 亚久久伊人精品青青草原2020| 九九九网站| 欧美日本免费| 日本特黄特色aa大片免费| 日韩中文字幕一区二区不卡| 久久久久久久免费视频| 国产精品免费精品自在线观看| 久草免费在线观看| 午夜家庭影院| 国产国语对白一级毛片| 黄色福利片| 九九久久99| 欧美一级视频免费| 四虎论坛| 国产视频一区二区在线播放| 日韩在线观看视频免费| 天天色色色| 成人免费网站视频ww| 日韩综合| 99久久精品费精品国产一区二区| 国产a视频精品免费观看| 国产成人女人在线视频观看| 国产不卡高清| 一级女性全黄久久生活片| 成人免费一级毛片在线播放视频| 久久久成人影院| 日韩男人天堂| 国产伦久视频免费观看 视频| 欧美激情在线精品video| 精品国产三级a∨在线观看| 欧美激情一区二区三区在线 | 免费的黄视频| 黄视频网站在线免费观看| 欧美日本免费| 黄视频网站在线观看| 日韩免费在线视频| 九九久久99| 成人免费高清视频| 久久久久久久男人的天堂| 91麻豆高清国产在线播放| 尤物视频网站在线| 欧美1区2区3区| 成人免费福利片在线观看| 999久久狠狠免费精品| 国产a毛片| 午夜家庭影院| 亚欧成人毛片一区二区三区四区 | 精品国产香蕉在线播出| 91麻豆tv| 国产高清视频免费| 亚洲 欧美 成人日韩| 天天做日日爱| 日韩欧美一及在线播放| 日韩中文字幕在线观看视频|