2012-10-04 41 views
0

我想上傳圖片並調整大小,同時保持其寬高比,然後將其保存到服務器。我寧願它使圖像的寬度爲200px。這樣圖像將從左到右填充圖片框。我不確定如何做到這一點。現在我正在使用FileUpload控件。圖像上傳到一個流,轉換,我想它保存到文件系統。我知道我在這裏做錯了事。上傳圖片並調整大小問題

string type = FileUpload1.PostedFile.ContentType; 

byte[] snap = new byte[FileUpload1.PostedFile.ContentLength]; 

System.IO.Stream stream = FileUpload1.FileContent; 

System.Drawing.Image imageLarge = System.Drawing.Image.FromStream(stream); 
System.Drawing.Image imageLarge1 = ResizeImage(imageLarge, 200, 300); 
MemoryStream memolarge = new MemoryStream(); 
imageLarge1.Save(memolarge, System.Drawing.Imaging.ImageFormat.Jpeg); 
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(memolarge); 

回答

0

您使用的鱈魚是正確的。但是,它不考慮寬高比。

要計算縱橫比,您需要做的是計算圖像的實際寬度和高度,並計算上傳圖像的比例。

一旦你有了這個比例,你需要應用該比例來調整圖像的大小。

0

您需要通過保持縱橫比來設置正確的高度。

int newHeight = ActualImgHeight*200/ActualImgWidth; 
Bitmap bmp = new Bitmap(200, newHeight); 
Graphics g = Graphics.FromImage((Image)bmp); 
g.InterpolationMode = InterpolationMode.HighQualityBilinear; 
g.CompositingQuality = CompositingQuality.HighQuality; 
g.SmoothingMode = SmoothingMode.HighQuality; 
g.DrawImage(imgToResize, 0, 0, 200, newHeight); 
g.Dispose(); 
bmp.Save(path,System.Drawing.Imaging.ImageFormat.Jpeg); 

希望這有助於。