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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

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

2019-11-14 13:42:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 前言:在日常圖片瀏覽中,如果圖片過(guò)多,只有一張張的打開(kāi)圖片才能知道圖片的內(nèi)容,顯然這樣瀏覽起來(lái)非常不便。Windows系統(tǒng)在瀏覽圖片時(shí)提供了縮略圖的功能,這樣大大的方便了瀏覽者了解每張圖片的內(nèi)容,本實(shí)例采用兩種方式實(shí)現(xiàn)了與Windows系統(tǒng)縮略圖相同的功能。

第一種:生成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     //新建一個(gè)bmp圖片 52     Image bitmap = new System.Drawing.Bitmap(towidth,toheight); 53  54     //新建一個(gè)畫(huà)板 55     Graphics g = System.Drawing.Graphics.FromImage(bitmap); 56  57     //設(shè)置高質(zhì)量插值法 58     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; 59  60     //設(shè)置高質(zhì)量,低速度呈現(xiàn)平滑程度 61     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 62  63     //清空畫(huà)布并以透明背景色填充 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

第二種:寫(xiě)成ThumbnailClass類,書(shū)寫(xiě)4個(gè)重載方法,有直接返回Image對(duì)象的,有生成縮略圖,并且保存到指定目錄等等

  1 using System.IO;  2 using System.Drawing;  3 using System.Drawing.Imaging;  4   5 /// <summary>  6 /// 圖片處理類  7 /// 1、生成縮略圖片或按照比例改變圖片的大小和畫(huà)質(zhì)  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     /// 類的構(gòu)造函數(shù) 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對(duì)象 35     /// </summary> 36     /// <param name="Width">縮略圖的寬度</param> 37     /// <param name="Height">縮略圖的高度</param> 38     /// <returns>縮略圖的Image對(duì)象</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">縮略圖保存的全文件名,(帶路徑),參數(shù)格式: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對(duì)象 89     /// </summary> 90     /// <param name="Percent">縮略圖的寬度百分比 如:需要百分之80,就填0.8</param>   91     /// <returns>縮略圖的Image對(duì)象</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對(duì)象116     /// </summary>117     /// <param name="Percent">縮略圖的寬度百分比 如:需要百分之80,就填0.8</param>  118     /// <param name="targetFilePath">縮略圖保存的全文件名,(帶路徑),參數(shù)格式: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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武山县| 修文县| 来凤县| 邯郸县| 枞阳县| 桐柏县| 南丰县| 松溪县| 万山特区| 峨边| 东兴市| 英山县| 连南| 英超| 大关县| 申扎县| 加查县| 蒙阴县| 沾化县| 五原县| 新宁县| 沂南县| 柞水县| 新巴尔虎左旗| 卢湾区| 彭州市| 石城县| 洛南县| 利津县| 武功县| 永济市| 恩平市| 左权县| 湘乡市| 霸州市| 霍州市| 桑日县| 容城县| 茶陵县| 和龙市| 凤凰县|