2013-02-17 65 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需要显示更多细节,但最终尺寸是由我在这里调用的。