使用GetThumbnailImage進行圖片縮放操作


 

/// <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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM