2011-03-14 81 views
1

我一直在尋找一種方式來調整圖像的大小,然後將其上傳到我的數據庫。現在文件只是上傳,如果它們不是正確的大小,那麼我的網頁看起來像一團糟。在將圖片上傳到我的數據庫之前,如何調整圖片大小,我想上傳原始大小的圖片,並調整大小。這可能與ASP.net。我看過一些關於圖片大小調整的教程,但沒有一個能夠幫助,如果任何人都可以提供幫助,那會很棒。我開始查看this教程,但無法在我的SQL上載中實現它。ASP.net c#調整大小圖像SQL上傳

感謝

+0

你能分享一下你到目前爲止試過的代碼嗎? – Cyberdrew 2011-03-14 15:47:13

+0

使用http://imageresizing.net庫獲得最佳圖像質量和正確的內存管理。使用(MemoryStream ms = new MemoryStream()){ImageBuilder.Current.Build(postedFile,ms,new ResizeSettings(「maxwidth = 800&maxheight = 600&format = jpg」); return ms.ToArray();} – 2011-08-31 18:10:04

回答

2

這樣的事情,我使用MVC因此HttpPostedFileBase。但是,這是輸入一個file輸入類型並返回一個字節數組,非常適合上傳到數據庫。

using System.Drawing; 
using System.Drawing.Drawing2D; 

private static byte[] PrepImageForUpload(HttpPostedFileBase FileData) 
{ 
    using (Bitmap origImage = new Bitmap(FileData.InputStream)) 
    { 
     int maxWidth = 165; 

     int newWidth = origImage.Width; 
     int newHeight = origImage.Height;   
     if (origImage.Width < newWidth) //Force to max width 
     { 
      newWidth = maxWidth; 
      newHeight = origImage.Height * maxWidth/origImage.Width; 
     } 

     using (Bitmap newImage = new Bitmap(newWidth, newHeight)) 
     { 
      using (Graphics gr = Graphics.FromImage(newImage)) 
      { 
       gr.SmoothingMode = SmoothingMode.AntiAlias; 
       gr.InterpolationMode = InterpolationMode.HighQualityBicubic; 
       gr.PixelOffsetMode = PixelOffsetMode.HighQuality; 
       gr.DrawImage(origImage, new Rectangle(0, 0, newWidth, newHeight)); 

       MemoryStream ms = new MemoryStream(); 
       newImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
       return ms.ToArray(); 
      } 
     } 
    } 
}