2013-02-17 62 views
0

我正在使用下面的代碼來縮小圖像的大小。它工作正常。我的問題是,一張3MB的圖片會縮小到470〜KB。有沒有辦法進一步縮小文件大小?我玩過關於插值模式,平滑模式和其他設置的所有可能的設置,但最終的圖像仍然在400 kb左右。這些圖像用於報紙網站,因此也應該保持其品質。使用ASP.NET縮小圖像大小(更多)


編輯 我的圖像尺寸爲4000 X 3000像素,我寬縮減至650像素。


Dim image_p As Image = _ 
    ResizeImage(img, Convert.ToInt32(pWidth), Convert.ToInt32(pHeight)) 

Private Function ResizeImage(_ 
    original_img As Bitmap, width As Integer, height As Integer) As Bitmap 
     Dim callback As New Image.GetThumbnailImageAbort(AddressOf GetThumbAbort) 

     Dim new_img As New Bitmap(original_img, width, height) 'new blank bitmap' 

     Dim g As Graphics = Graphics.FromImage(new_img) 

     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High 
     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias 
     g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed 
     g.CompositingQuality = _ 
      System.Drawing.Drawing2D.CompositingQuality.HighSpeed 
     g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver 
     g.DrawImage(original_img, 0, 0, width, height) 
     Return new_img 
End Function 
+0

什麼「這些圖像用於報紙網站,因此應該保持其品質」呢?保留什麼? – Will 2013-02-17 08:51:22

+0

你使用什麼文件格式?你有一個示例圖像?什麼是完整的尺寸和顏色深度? 650X?X? – Will 2013-02-17 08:53:23

+0

@意志圖像格式是jpg。關於我的看法;我承受不起低質量的壓縮,因爲這些圖像將在網站的首頁上使用。(當我說這些時,上傳到網站的所有照片大約是3MB,我將它們縮小到650 x 300(使用裁剪) – 2013-02-17 09:04:03

回答

0

如果使用Image.Save方法有EncoderParametres選項,則可以按比例縮小尺寸。

MSDN example的代碼只是部分:

'Save the bitmap as a JPEG file with quality level 50. 
myEncoderParameter = New EncoderParameter(myEncoder, CType(50L, Int32)) 
myEncoderParameters.Param(0) = myEncoderParameter 
myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters) 

注意:您使用的其他參數,它們會影響圖像的組成,而不是當你把它的JPG最終大小。它們以質量的方式影響尺寸,銳度越高,尺寸越大,因爲jpeg需要顯示更多細節,但最終尺寸是由我在這裏調用的。