程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .net為圖片生成不變形縮略圖

.net為圖片生成不變形縮略圖

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


縮略圖 寬ks 高gs
原圖 寬ky 高gy

ky/gy > ks/gs 也就是ky*gs>gy*ks
如果原圖 寬比高 大於 小圖 寬比高
則取原圖的高 然後原圖寬則取高剩以小圖的寬,再除以小圖的高


ky/gy < ks/gs 也就是ky*gs<gy*ks
如果原圖 寬比高 小於 小圖 寬比高
則取原圖的寬 然後高則取原圖寬剩以小圖的高,再除以小圖的寬

實現代碼如下,代碼是從開源項目HoverTreeCMS中獲取的,更多信息請參考:
http://hovertree.com/menu/hovertreecms/


/// <summary>
/// 為圖片生成縮略圖 by 何問起
/// </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)
{
//代碼是從開源項目HoverTreeCMS中獲取的
//更多信息請參考:http://hovertree.com/menu/hovertreecms/
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;
}


需要引用命名空間:System.Drawing

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved