/// <summary>
/// 獲取等比例縮放圖片的方法
/// </summary>
/// <param name="imgPath">待縮放圖片路徑</param>
/// <param name="savePath">縮放圖片保存路徑</param>
/// <param name="format">縮放圖片保存的格式</param>
/// <param name="scaling">要保持的寬度或高度</param>
/// <param name="keepWidthOrHeight">如果為true則保持寬度為scaling,否則保持高度為scaling</param>
/// <returns></returns>
public bool GetThumbnail(string imgPath, string savePath, ImageFormat format, int scaling, bool keepWidthOrHeight)
{
try
{
using (Bitmap myBitmap = new Bitmap(imgPath))
{
int width = 0;
int height = 0;
int tw = myBitmap.Width;//圖像的實際寬度
int th = myBitmap.Height;//圖像的實際高度
if (keepWidthOrHeight)//保持寬度
{
#region 自動保持寬度
if (scaling >= tw)
{
width = tw;
height = th;
}
else
{
double ti = Convert.ToDouble(tw) / Convert.ToDouble(scaling);
if (ti == 0d)
{
width = tw;
height = th;
}
else
{
width = scaling;
height = Convert.ToInt32(Convert.ToDouble(th) / ti);
}
}
#endregion
}
else
{
#region 自動保持高度
if (scaling >= th)
{
width = tw;
height = th;
}
else
{
double ti = Convert.ToDouble(th) / Convert.ToDouble(scaling);
if (ti == 0d)
{
width = tw;
height = th;
}
else
{
width = Convert.ToInt32(Convert.ToDouble(tw) / ti);
height = scaling;
}
}
#endregion
}
using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, () => { return false; }, IntPtr.Zero))
{
myThumbnail.Save(savePath, format);
}
}
return true;
}
catch
{
return false;
}
}
上面的方法適合在vs2008中使用,如果是2005只需將
using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, () => { return false; }, IntPtr.Zero))
這句換成
using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, new Image.GetThumbnailImageAbort(delegate { return false; }), IntPtr.Zero))
即可。
使用示例:GetThumbnail("d:/1.jpg", "d:/2.jpg", ImageFormat.Jpeg, 263, false);
引用自 http://www.cnblogs.com/sq111433/archive/2009/12/01/1614205.html