天天看點

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

在網站開發時,生成縮略圖是一個非常常見和實用的功能.以前在asp裡隻能借助com元件實作,現在在.net裡可以利用架構的強大的類庫輕松實作.下面帖出完整的代碼(帶詳細注釋),參考了網上的一些文章及.net sdk相關内容.QQROOM網絡家園的圖檔上傳用到了所有的4種生成方式.

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// <summary>

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// 生成縮略圖

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// </summary>

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// <param name="originalImagePath">源圖路徑(實體路徑)</param>

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// <param name="thumbnailPath">縮略圖路徑(實體路徑)</param>

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// <param name="width">縮略圖寬度</param>

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// <param name="height">縮略圖高度</param>

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        /// <param name="mode">生成縮略圖的方式</param>    

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        {

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            Image originalImage = Image.FromFile(originalImagePath);

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            int towidth = width;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            int toheight = height;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            int x = 0;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            int y = 0;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            int ow = originalImage.Width;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            int oh = originalImage.Height;        

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            switch (mode)

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            {        

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                case "HW"://指定高寬縮放(可能變形)                

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    break;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                case "W"://指定寬,高按比例                    

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    toheight = originalImage.Height * width/originalImage.Width;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                case "H"://指定高,寬按比例

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    towidth = originalImage.Width * height/originalImage.Height;                    

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    break;        

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                case "Cut"://指定高寬裁減(不變形)                

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    {

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        oh = originalImage.Height;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        ow = originalImage.Height*towidth/toheight;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        y = 0;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        x = (originalImage.Width - ow)/2;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    }

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    else

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        ow = originalImage.Width;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        oh = originalImage.Width*height/towidth;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        x = 0;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                        y = (originalImage.Height - oh)/2;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                    break;                    

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                default :

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            }    

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            //建立一個bmp圖檔

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            Image bitmap = new System.Drawing.Bitmap(towidth,toheight);

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            //建立一個畫闆

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            Graphics g = System.Drawing.Graphics.FromImage(bitmap);

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            //設定高品質插值法

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            //設定高品質,低速度呈現平滑程度

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            //清空畫布并以透明背景色填充

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            g.Clear(Color.Transparent);        

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            //在指定位置并且按指定大小繪制原圖檔的指定部分

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), 

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                new Rectangle(x, y, ow,oh),

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                GraphicsUnit.Pixel);

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            try

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            {            

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                //以jpg格式儲存縮略圖

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            }

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            catch(System.Exception e)

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            {

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                throw e;

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

            finally

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                originalImage.Dispose();

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                bitmap.Dispose();                        

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

                g.Dispose();

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

        }

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

關鍵方法Graphics.DrawImage見ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm

asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式
asp.net生成高品質縮略圖通用函數(c#代碼),支援多種生成方式

本文轉自高海東部落格園部落格,原文連結:http://www.cnblogs.com/ghd258/archive/2006/02/26/337957.html,如需轉載請自行聯系原作者

繼續閱讀