亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#生成圖片縮略圖(2種思路)

2019-11-14 13:42:14
字體:
來源:轉載
供稿:網友

 前言:在日常圖片瀏覽中,如果圖片過多,只有一張張的打開圖片才能知道圖片的內容,顯然這樣瀏覽起來非常不便。Windows系統在瀏覽圖片時提供了縮略圖的功能,這樣大大的方便了瀏覽者了解每張圖片的內容,本實例采用兩種方式實現了與Windows系統縮略圖相同的功能。

第一種:生成MakeThumbnail方法

 1 //// <summary>  2 /// 生成縮略圖  3 /// </summary>  4 /// <param name="originalImagePath">源圖路徑(物理路徑)</param>  5 /// <param name="thumbnailPath">縮略圖路徑(物理路徑)</param>  6 /// <param name="width">縮略圖寬度</param>  7 /// <param name="height">縮略圖高度</param>  8 /// <param name="mode">生成縮略圖的方式</param>      9 public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode) 10 { 11   Image originalImage = Image.FromFile(originalImagePath); 12 13     int towidth = width; 14     int toheight = height; 15          16     int x = 0; 17     int y = 0; 18     int ow = originalImage.Width; 19     int oh = originalImage.Height;         20  21     switch (mode) 22     {         23         case "HW"://指定高寬縮放(可能變形)                 24         break; 25         case "W"://指定寬,高按比例                     26         toheight = originalImage.Height * width/originalImage.Width; 27         break; 28         case "H"://指定高,寬按比例 29         towidth = originalImage.Width * height/originalImage.Height;                     30         break; 31         case "Cut"://指定高寬裁減(不變形)        32          if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight) 33          { 34               oh = originalImage.Height; 35               ow = originalImage.Height*towidth/toheight; 36               y = 0;37                   x =  (originalImage.Width - ow)/2;38           } 39           else 40           { 41               ow = originalImage.Width; 42               oh = originalImage.Width*height/towidth; 43               x = 0; 44               y = (originalImage.Height - oh)/2; 45           } 46         break;                     47         default : 48         break; 49     }     50              51     //新建一個bmp圖片 52     Image bitmap = new System.Drawing.Bitmap(towidth,toheight); 53  54     //新建一個畫板 55     Graphics g = System.Drawing.Graphics.FromImage(bitmap); 56  57     //設置高質量插值法 58     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 59  60     //設置高質量,低速度呈現平滑程度 61     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 62  63     //清空畫布并以透明背景色填充 64     g.Clear(Color.Transparent);         65  66     //在指定位置并且按指定大小繪制原圖片的指定部分 67     g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow,oh),GraphicsUnit.Pixel);68     try 69     {             70       //以jpg格式保存縮略圖 71       bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg); 72     } 73     catch(System.Exception e) 74     { 75        throw e; 76     } 77     finally 78     { 79       originalImage.Dispose(); 80        bitmap.Dispose();                         81        g.Dispose(); 82     } 83  }84 85 ThumbnailClass
MakeThumbnail

第二種:寫成ThumbnailClass類,書寫4個重載方法,有直接返回Image對象的,有生成縮略圖,并且保存到指定目錄等等

  1 using System.IO;  2 using System.Drawing;  3 using System.Drawing.Imaging;  4   5 /// <summary>  6 /// 圖片處理類  7 /// 1、生成縮略圖片或按照比例改變圖片的大小和畫質  8 /// 2、將生成的縮略圖放到指定的目錄下  9 /// </summary> 10 public class ImageClass 11 { 12     public Image ResourceImage; 13     PRivate int ImageWidth; 14     private int ImageHeight; 15  16     public string ErrMessage; 17  18     /// <summary> 19     /// 類的構造函數 20     /// </summary> 21     /// <param name="ImageFileName">圖片文件的全路徑名稱</param> 22     public ImageClass(string ImageFileName) 23     { 24         ResourceImage=Image.FromFile(ImageFileName); 25      ErrMessage=""; 26     } 27  28     public bool ThumbnailCallback() 29     { 30      return false; 31     } 32  33     /// <summary> 34     /// 生成縮略圖重載方法1,返回縮略圖的Image對象 35     /// </summary> 36     /// <param name="Width">縮略圖的寬度</param> 37     /// <param name="Height">縮略圖的高度</param> 38     /// <returns>縮略圖的Image對象</returns> 39     public Image GetReducedImage(int Width,int Height) 40     { 41      try 42      { 43       Image ReducedImage; 44  45       Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);  46       47       ReducedImage=ResourceImage.GetThumbnailImage(Width,Height,callb,IntPtr.Zero); 48    49       return ReducedImage; 50      } 51      catch(Exception e) 52      { 53       ErrMessage=e.Message;  54          return null; 55      } 56     } 57  58     /// <summary> 59     /// 生成縮略圖重載方法2,將縮略圖文件保存到指定的路徑 60     /// </summary> 61     /// <param name="Width">縮略圖的寬度</param> 62     /// <param name="Height">縮略圖的高度</param> 63     /// <param name="targetFilePath">縮略圖保存的全文件名,(帶路徑),參數格式:D:/Images/filename.jpg</param> 64     /// <returns>成功返回true,否則返回false</returns> 65     public bool GetReducedImage(int Width,int Height,string targetFilePath) 66     { 67      try 68      { 69       Image ReducedImage; 70  71       Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);  72       73       ReducedImage=ResourceImage.GetThumbnailImage(Width,Height,callb,IntPtr.Zero); 74       ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg); 75  76       ReducedImage.Dispose();  77    78       return true; 79      } 80      catch(Exception e) 81      { 82       ErrMessage=e.Message;  83       return false; 84      } 85     } 86  87     /// <summary> 88     /// 生成縮略圖重載方法3,返回縮略圖的Image對象 89     /// </summary> 90     /// <param name="Percent">縮略圖的寬度百分比 如:需要百分之80,就填0.8</param>   91     /// <returns>縮略圖的Image對象</returns> 92     public Image GetReducedImage(double Percent) 93     { 94      try 95      { 96       Image ReducedImage; 97  98       Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback); 99 100       ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);101       ImageHeight=Convert.ToInt32(ResourceImage.Width*Percent);102      103       ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);104   105       return ReducedImage;106      }107      catch(Exception e)108      {109       ErrMessage=e.Message; 110       return null;111      }112     }113 114     /// <summary>115     /// 生成縮略圖重載方法4,返回縮略圖的Image對象116     /// </summary>117     /// <param name="Percent">縮略圖的寬度百分比 如:需要百分之80,就填0.8</param>  118     /// <param name="targetFilePath">縮略圖保存的全文件名,(帶路徑),參數格式:D:/Images/filename.jpg</param>119     /// <returns>成功返回true,否則返回false</returns>120     public bool GetReducedImage(double Percent,string targetFilePath)121     {122      try123      {124       Image ReducedImage;125 126       Image.GetThumbnailImageAbort callb=new Image.GetThumbnailImageAbort(ThumbnailCallback);127 128       ImageWidth=Convert.ToInt32(ResourceImage.Width*Percent);129       ImageHeight=Convert.ToInt32(ResourceImage.Width*Percent);130      131       ReducedImage=ResourceImage.GetThumbnailImage(ImageWidth,ImageHeight,callb,IntPtr.Zero);132 133       ReducedImage.Save(@targetFilePath,ImageFormat.Jpeg);134 135       ReducedImage.Dispose(); 136   137       return true;138      }139      catch(Exception e)140      {141       ErrMessage=e.Message; 142       return false;143      }144     }145 }
ThumbnailClass

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人免费网| 高清日韩电视剧大全免费播放在线观看| 美女少妇精品视频| 国产成人av在线播放| 国产精品毛片a∨一区二区三区|国| 91干在线观看| 欧美性xxxx| 日韩精品免费电影| 在线看片第一页欧美| 色中色综合影院手机版在线观看| 亚洲视频一区二区三区| 成人情趣片在线观看免费| 欧美猛少妇色xxxxx| 欧美日韩国产成人在线| 亚洲少妇激情视频| 91精品久久久久久久久久久久久久| 久久免费国产精品1| 91九色国产在线| 亚洲一区二区三区在线视频| 91po在线观看91精品国产性色| 在线看片第一页欧美| 国产日韩欧美夫妻视频在线观看| 国产成人一区三区| 日韩欧美亚洲国产一区| 亚洲国产高清高潮精品美女| 日韩欧美亚洲国产一区| 国外成人在线视频| 亚洲色图激情小说| 日韩欧美在线中文字幕| 亚洲美女自拍视频| 久久九九有精品国产23| 91中文在线视频| 一区二区三区天堂av| 久久久久国产精品免费网站| 97超碰色婷婷| 久久久久久久久久久av| 亚洲福利在线观看| www.午夜精品| 日韩精品免费观看| 69av成年福利视频| 日韩欧美在线观看视频| 亚洲免费福利视频| 夜色77av精品影院| 国产精品综合不卡av| 精品亚洲国产视频| 亚洲久久久久久久久久久| 国产精品久久久久久久久久免费| 国内偷自视频区视频综合| 亚洲人成伊人成综合网久久久| 成人激情电影一区二区| 欧美福利视频在线| 久久成年人视频| 精品国产精品三级精品av网址| 中文字幕在线亚洲| 国产精品麻豆va在线播放| 日韩在线视频免费观看| 91久久在线视频| 97精品国产97久久久久久免费| 国产在线999| 国内精品一区二区三区| 欧美午夜www高清视频| 欧美在线欧美在线| 欧美日韩午夜视频在线观看| 91精品国产九九九久久久亚洲| www.久久撸.com| 日韩激情av在线免费观看| 久久久久国产一区二区三区| 日韩欧美在线观看| 国产日韩视频在线观看| 91精品视频在线播放| 国产成人+综合亚洲+天堂| 91午夜理伦私人影院| 2019中文字幕全在线观看| 91wwwcom在线观看| 国内精品小视频| 成人精品视频在线| 亚洲另类xxxx| 久久久久国产精品一区| 日韩免费在线免费观看| 一区二区三区动漫| 91亚洲精品一区| 欧美日韩美女在线观看| 懂色aⅴ精品一区二区三区蜜月| 日韩欧美视频一区二区三区| 91手机视频在线观看| 亚洲最新av在线| 国产精品激情av在线播放| 亚洲精品国产精品国自产观看浪潮| 欧美极品少妇与黑人| 国产精品永久免费在线| 亚洲欧美日韩图片| 国产精品专区第二| 色在人av网站天堂精品| 亚洲福利小视频| 91精品视频一区| 日韩欧美aaa| 日韩中文字幕亚洲| 久久久这里只有精品视频| 久久久精品欧美| 日韩中文字幕在线播放| 国产精品久久久久国产a级| 久久久久久久久久久久av| 中文字幕日韩欧美在线| 日韩中文字幕不卡视频| 亚洲性线免费观看视频成熟| 国产丝袜一区视频在线观看| 久久精品亚洲精品| 福利视频第一区| 久热精品视频在线免费观看| 国产精品亚洲综合天堂夜夜| 国产亚洲精品久久| 日韩中文在线视频| 亚洲欧美国产日韩中文字幕| 成人激情综合网| 青青草原一区二区| 久久91超碰青草是什么| 欧美一区在线直播| 成人欧美一区二区三区在线| 欧美性猛交99久久久久99按摩| 欧美专区中文字幕| 91成人在线播放| 亚洲国产精品久久久久秋霞不卡| 国产精品一区二区三| 97精品国产97久久久久久春色| 日韩中文在线中文网在线观看| 欧美又大又硬又粗bbbbb| 色婷婷综合久久久久中文字幕1| 狠狠躁夜夜躁人人躁婷婷91| 亚洲人成在线观看| 日韩欧美aaa| 国产精品美女在线观看| 精品视频—区二区三区免费| 色综合久久天天综线观看| 欧美视频在线观看 亚洲欧| 97国产精品免费视频| 97成人在线视频| 亚洲护士老师的毛茸茸最新章节| 欧美性xxxx18| 亚洲欧美日韩一区二区在线| 久久久中文字幕| 国产精品成人一区| 欧美猛男性生活免费| 97av在线视频免费播放| 草民午夜欧美限制a级福利片| 久久久中文字幕| 亚洲欧美三级在线| 日韩精品在线视频观看| 国产在线观看不卡| 日韩中文字幕网| 草民午夜欧美限制a级福利片| 91香蕉电影院| 亚洲一区二区免费在线| 欧美精品在线播放| 欧洲中文字幕国产精品| 国产一区二区精品丝袜| 中文字幕亚洲欧美一区二区三区| 欧美特级www| 精品中文字幕视频| 亚洲mm色国产网站| 精品中文字幕乱| 精品偷拍一区二区三区在线看| www.欧美视频| 国产精品福利片| 最近2019年中文视频免费在线观看|