demoshop

demo, trying to be the best_

在我們利用asp.net的上傳將圖檔傳至server後總是會害怕使用者上傳了一個無敵大的圖檔,雖然可以限制單檔上傳大小,但是使用者不是每個都會使用繪圖軟體會縮圖,所以我們限制使用者不如來幫助使用者自動縮圖。

★注意事項:此篇範例假設您已經製作好相關上傳方式,並且對於程式有一定程度

◆廢話不多說直接來吧,首先在cs檔案上方using以下兩個類別

using System.Drawing.Imaging;
using System.Drawing; 

◆以下是程式主體(相關的參數請自行撰寫)

System.Drawing.Image image = System.Drawing.Image.FromFile("圖檔的位子");
        //必須使用絕對路徑
        ImageFormat thisFormat = image.RawFormat;
        //取得影像的格式
        int fixWidth = 0;
        int fixHeight = 0;
        //第一種縮圖用
        int maxPx = Convert.ToInt16(ConfigurationManager.AppSettings["maxWidth"]);
        //宣告一個最大值,demo是把該值寫到web.config裡
        if (image.Width > maxPx || image.Height > maxPx)
            //如果圖片的寬大於最大值或高大於最大值就往下執行
        {
            if (image.Width >= image.Height)
                //圖片的寬大於圖片的高
            {
                fixWidth = maxPx;
                //設定修改後的圖寬
                fixHeight = Convert.ToInt32((Convert.ToDouble(fixWidth) / Convert.ToDouble(image.Width)) * Convert.ToDouble(image.Height));
                //設定修改後的圖高
            }
            else
            {
                fixHeight = maxPx;
                //設定修改後的圖高
                fixWidth = Convert.ToInt32((Convert.ToDouble(fixHeight) / Convert.ToDouble(image.Height)) * Convert.ToDouble(image.Width));
                //設定修改後的圖寬
            }
 
        }
        else
            //圖片沒有超過設定值,不執行縮圖
        {
            fixHeight = image.Height;
            fixWidth = image.Width;
        }
        Bitmap imageOutput = new Bitmap(image, fixWidth, fixHeight);
 
        //輸出一個新圖(就是修改過的圖)
        string fixSaveName = string.Concat("新圖的檔案名稱",".jpg");
        //副檔名不應該這樣給,但因為此範例沒有讀取檔案的部份所以demo就直接給啦
 
        imageOutput.Save(string.Concat(Server.MapPath("~/"),fixSaveName), thisFormat);   
        //將修改過的圖存於設定的位子
        imageOutput.Dispose();
        //釋放記憶體
        image.Dispose();
        //釋放掉圖檔 


?小鋪廢言:利用以上的方式就可以讓指定的圖檔達到縮圖的效果,希望對您有幫助

回應討論