2013-05-01 94 views
0

我曾经使用这段代码来调整上传图片的大小,但是当我将生成的图片与其他网站中的其他图片进行比较时,我发现它的尺寸很大!我调整了上传图片的大小,但它仍然有很大的尺寸

System.Drawing.Image img = System.Drawing.Image.FromFile(MapPath(filePath)); 

      int mediumWidth = 350; 
      int mediumHeight = mediumWidth * img.Height/img.Width; 
      System.Drawing.Bitmap bmw = new System.Drawing.Bitmap(img, mediumWidth, mediumHeight);//resize image 
      bmw.Save(MapPath("~/image/thumb/") + fileName); 
      bmw.Dispose(); 

生成的图像具有200 KB,但在其他网站也有20 KB ..有我的代码有问题吗?

+3

你存储的位图对象为位图文件(.BMP)。这是未编码和大。 (即使您重复使用原始文件名,并且它是png或sth:这不会使您的新位图成为png)。示例请参阅JpegBitmapEncoder类。 – dognose 2013-05-01 19:45:58

+0

[C# - 创建较小分辨率的同一图像后图像大小增加]的可能重复(http://stackoverflow.com/questions/8550159/c-sharp-image-size-increases-after-creating-a-smaller - 分辨率的最-相同-i)的 – mbeckish 2013-05-01 20:02:21

回答

2

您将它保存为未压缩的位图。其他网站可能使用jpeg编码,这会导致更小的文件大小。

尝试使用the Save overload which allows specifying encoding代替:

bmw.Save(MapPath("~/image/thumb/") + fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 
相关问题