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

首頁 > 編程 > .NET > 正文

.net等比縮放生成縮略圖的方法

2024-07-10 13:29:43
字體:
來源:轉載
供稿:網友
本文給大家匯總了2個C#中等比縮放實現生成縮略圖的方法,第一種稍微簡單些,第二種是本人常用的方法,這里推薦給大家,有需要的小伙伴可以參考下。
 

生成縮略圖是一個十分常用功能,找到了一個方法,重寫部分代碼,實用又好用,.net又一個生成縮略圖的方法,不變形

/// <summary>    /// 為圖片生成縮略圖   /// </summary>    /// <param name="phyPath">原圖片的路徑</param>    /// <param name="width">縮略圖寬</param>    /// <param name="height">縮略圖高</param>    /// <returns></returns>    public System.Drawing.Image GetHvtThumbnail(System.Drawing.Image image, int width, int height)   {     Bitmap m_hovertreeBmp = new Bitmap(width, height);     //從Bitmap創建一個System.Drawing.Graphics      Graphics m_HvtGr = Graphics.FromImage(m_hovertreeBmp);     //設置      m_HvtGr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;     //下面這個也設成高質量      m_HvtGr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;     //下面這個設成High      m_HvtGr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;     //把原始圖像繪制成上面所設置寬高的縮小圖      Rectangle rectDestination = new Rectangle(0, 0, width, height);     int m_width, m_height;     if (image.Width * height > image.Height * width)     {       m_height = image.Height;       m_width = (image.Height * width) / height;     }     else     {       m_width = image.Width;       m_height = (image.Width * height) / width;     }     m_HvtGr.DrawImage(image, rectDestination, 0, 0, m_width, m_height, GraphicsUnit.Pixel);     return m_hovertreeBmp;   }

C#縮略圖生成類,采用高質量插值法實現縮略圖生成,高質量,低速度呈現平滑程度,可以保持縮略圖縱橫比,在獲取縮略圖的時候一開始就根據百分比獲取圖片的尺寸、根據設定的大小返回圖片的大小,并高質量保存縮略圖圖片,為原圖片設置EncoderParameters 對象。

以下為類文件,建議保存文件名為:ImageHelper.cs

using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Imaging;namespace HtmlSnap{  public static class ImageHelper  {    /// 獲取縮略圖    public static Image GetThumbnailImage(Image image, int width, int height)    {      if (image == null || width < 1 || height < 1)        return null;      // 新建一個bmp圖片      Image bitmap = new System.Drawing.Bitmap(width, height);      // 新建一個畫板      using (Graphics g = System.Drawing.Graphics.FromImage(bitmap))      {        // 設置高質量插值法        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;        // 設置高質量,低速度呈現平滑程度        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;                // 高質量、低速度復合        g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;         // 清空畫布并以透明背景色填充        g.Clear(Color.Transparent);         // 在指定位置并且按指定大小繪制原圖片的指定部分        g.DrawImage(image, new Rectangle(0, 0, width, height),          new Rectangle(0, 0, image.Width, image.Height),          GraphicsUnit.Pixel);        return bitmap;      }    }    /// <summary>    /// 生成縮略圖,并保持縱橫比    /// </summary>    /// <returns>生成縮略圖后對象</returns>    public static Image GetThumbnailImageKeepRatio(Image image, int width, int height)    {      Size imageSize = GetImageSize(image, width, height);      return GetThumbnailImage(image, imageSize.Width, imageSize.Height);    }    /// <summary>    /// 根據百分比獲取圖片的尺寸    /// </summary>    public static Size GetImageSize(Image picture, int percent)    {      if (picture == null || percent < 1)        return Size.Empty;      int width = picture.Width * percent / 100;      int height = picture.Height * percent / 100;      return GetImageSize(picture, width, height);    }    /// <summary>    /// 根據設定的大小返回圖片的大小,考慮圖片長寬的比例問題    /// </summary>    public static Size GetImageSize(Image picture, int width, int height)    {      if (picture == null || width < 1 || height < 1)        return Size.Empty;      Size imageSize;      imageSize = new Size(width, height);      double heightRatio = (double)picture.Height / picture.Width;      double widthRatio = (double)picture.Width / picture.Height;      int desiredHeight = imageSize.Height;      int desiredWidth = imageSize.Width;      imageSize.Height = desiredHeight;      if (widthRatio > 0)        imageSize.Width = Convert.ToInt32(imageSize.Height * widthRatio);      if (imageSize.Width > desiredWidth)      {        imageSize.Width = desiredWidth;        imageSize.Height = Convert.ToInt32(imageSize.Width * heightRatio);      }      return imageSize;    }    /// <summary>    /// 獲取圖像編碼解碼器的所有相關信息    /// </summary>    /// <param name="mimeType">包含編碼解碼器的多用途網際郵件擴充協議 (MIME) 類型的字符串</param>    /// <returns>返回圖像編碼解碼器的所有相關信息</returns>    public static ImageCodecInfo GetCodecInfo(string mimeType)    {      ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();      foreach (ImageCodecInfo ici in CodecInfo)      {        if (ici.MimeType == mimeType) return ici;      }      return null;    }    public static ImageCodecInfo GetImageCodecInfo(ImageFormat format)    {      ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();      foreach (ImageCodecInfo icf in encoders)      {        if (icf.FormatID == format.Guid)        {          return icf;        }      }      return null;    }    public static void SaveImage(Image image, string savePath, ImageFormat format)    {      SaveImage(image, savePath, GetImageCodecInfo(format));    }    /// <summary>    /// 高質量保存圖片    /// </summary>    private static void SaveImage(Image image, string savePath, ImageCodecInfo ici)    {      // 設置 原圖片 對象的 EncoderParameters 對象      EncoderParameters parms = new EncoderParameters(1);      EncoderParameter parm = new EncoderParameter(Encoder.Quality, ((long)95));      parms.Param[0] = parm;      image.Save(savePath, ici, parms);      parms.Dispose();    }  }}


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
北条麻妃一区二区在线观看| 欧美又大又硬又粗bbbbb| 欧美另类极品videosbest最新版本| 国产91精品不卡视频| 日本精品视频在线观看| 午夜免费日韩视频| 欧美亚洲激情视频| 亚洲一二三在线| 亚洲欧美激情四射在线日| 欧美在线观看www| 国产欧美日韩高清| 美女黄色丝袜一区| 国产一区二区三区视频| 中文字幕在线观看日韩| 久久亚洲影音av资源网| 久久好看免费视频| 日韩精品一区二区视频| 韩国国内大量揄拍精品视频| 久久久噜噜噜久久久| 欧美日韩国产在线播放| 亚洲精品美女久久久| 欧美日韩不卡合集视频| 欧美理论电影网| 98精品国产自产在线观看| 久久夜色精品亚洲噜噜国产mv| 福利二区91精品bt7086| 日韩av免费看| 欧美重口另类videos人妖| 国产成人精品亚洲精品| 丰满岳妇乱一区二区三区| 亚洲欧美精品一区二区| 日韩激情视频在线播放| 国产精品aaa| 国产成人精品一区二区三区| 欧美日韩国产成人在线| 欧美日韩中文字幕| 日韩一二三在线视频播| 成人精品久久久| 91在线视频精品| 亚洲视频专区在线| 久久精品在线视频| 久久99久久亚洲国产| 欧美整片在线观看| 91sao在线观看国产| 亚洲一区二区三区sesese| 亚洲第一中文字幕在线观看| 不卡在线观看电视剧完整版| 久久久精品一区| 96国产粉嫩美女| 久久99国产综合精品女同| 久久精品久久久久| 国产视频亚洲视频| 亚洲第一区中文字幕| 色婷婷综合久久久久| 欧美一级在线播放| 欧美大奶子在线| 亚洲色图偷窥自拍| 亚洲欧美在线看| 欧美专区福利在线| 中文字幕综合在线| 国产精品日韩在线观看| 2019中文字幕全在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产另类 国产精品国产免费| 日韩免费看的电影电视剧大全| 精品成人国产在线观看男人呻吟| 亚洲最大成人在线| 欧美日韩国产丝袜另类| 国产精品综合网站| 久久视频中文字幕| 91精品久久久久久久久久久久久久| 岛国av一区二区| 亚洲跨种族黑人xxx| 日本欧美精品在线| 国产精品吹潮在线观看| 中文字幕久精品免费视频| 色婷婷综合成人av| 国产91色在线|免| 777国产偷窥盗摄精品视频| 欧美国产日韩在线| 日韩欧美中文免费| 色噜噜亚洲精品中文字幕| 日韩电影免费观看在线观看| 狠狠综合久久av一区二区小说| 2019亚洲男人天堂| 黑人巨大精品欧美一区二区免费| 欧洲日韩成人av| 性欧美办公室18xxxxhd| 91免费国产视频| 成人午夜小视频| 亚洲国产欧美一区二区三区久久| 米奇精品一区二区三区在线观看| 精品偷拍一区二区三区在线看| 亚洲色图35p| 在线色欧美三级视频| 国产91精品视频在线观看| 欧美激情亚洲自拍| 日韩在线观看精品| 欧美贵妇videos办公室| 日韩欧美中文在线| 亚洲国内精品在线| 亚洲一区二区三区四区在线播放| 国产精品久久久久91| 97人洗澡人人免费公开视频碰碰碰| 欧美中文字幕视频| 亚洲一区二区中文字幕| 亚洲福利视频在线| 久久这里只有精品99| 国产一区二区精品丝袜| 国产亚洲成精品久久| 久久精品人人爽| 欧美日韩国产一中文字不卡| 91久久国产精品91久久性色| 国产www精品| 亚洲精品videossex少妇| 国产精品尤物福利片在线观看| 国产精品久久久精品| 欧美亚洲在线视频| 欧美激情网站在线观看| 国产精品高清免费在线观看| 九九九热精品免费视频观看网站| 日韩一中文字幕| 欧美精品在线第一页| 亚洲bt天天射| 尤物九九久久国产精品的分类| 国产成人91久久精品| 精品国产福利在线| 亚洲精品国产精品乱码不99按摩| 国产精品xxxxx| 国产一区二区成人| 精品久久久久久久久久久久久久| 欧美贵妇videos办公室| 日韩视频中文字幕| 欧美日韩亚洲激情| 国产一区二区精品丝袜| 亚洲成人久久一区| 一区二区三区四区在线观看视频| 国产有码一区二区| 日韩免费观看av| 日韩中文字幕在线播放| 欧美xxxx14xxxxx性爽| 国产日韩欧美在线播放| 国产精品欧美激情| 国产亚洲精品91在线| 91在线视频精品| 欧美性受xxxx黑人猛交| 岛国av一区二区| 性色av香蕉一区二区| 日韩高清电影好看的电视剧电影| 国产精品高潮呻吟久久av无限| 91在线播放国产| 欧美精品国产精品日韩精品| 欧美日在线观看| 91国产高清在线| 亚洲综合中文字幕68页| 亚洲欧美另类自拍| 中文字幕综合一区| 久久久这里只有精品视频| 日韩欧美一区二区三区久久| 久久99热精品这里久久精品| 精品中文字幕在线2019| 成人黄色av免费在线观看| 在线精品国产欧美| 久久久久成人精品|