调整大小给我沉重的形象

时间:2010-06-18 09:17:24

标签: c# drawing

我正在通过方法调整jpeg 1200x900,556kb的大小:

public static Image ResizeImage(Image imgToResize, int height) //height=400
{
    int destWidth;
    int destHeight;

    int sourceWidth = imgToResize.Width;
    int sourceHeight = imgToResize.Height;

    float nPercent = 0;

    float nPercentH = 0;


    nPercentH = ((float)height / (float)sourceHeight);


    nPercent = nPercentH;


    destWidth = (int)(sourceWidth * nPercent);
    destHeight = height;

    Bitmap b = new Bitmap(destWidth, destHeight);
    Graphics g = Graphics.FromImage((Image)b);
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;

    g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
    g.Dispose();
    return b;
}

SavingŁ

Image image = Image.FromStream(new FileStream(path, FileMode.Open));
Image imageAfterResizing =ResizeImage(image,400);
imageAfterResizing.Save(@"c:\myPhoto.jpg");

给了我555kb 533x400 jpeg。

为什么这张照片太重了。

照片jpeg 2111kb 2156x1571  我得到556kb 533x400 jpeg

为什么第一种情况太可怕了!

http://img6.imageshack.us/img6/1127/photo1nz.jpg http://img248.imageshack.us/img248/8063/photo2y.jpg

4 个答案:

答案 0 :(得分:5)

看起来你没有指定保存格式,它可能会以位图的形式出现在另一端。

在保存期间指定格式:img.Save(“C:\\ foo.jpg”,ImageFormat.Jpeg);

答案 1 :(得分:1)

保存时会决定JPEG图像的压缩效果,但不会包含在您显示的代码中。

默认的压缩级别非常低,因此您可以将其设置为在保存时稍微压缩图像。

答案 2 :(得分:1)

我认为你会发现在两种情况下你都将较大的jpegs转换为位图图像。

两个位图都是533x400像素,两者的文件大小大致相同,为556kb。

如果要调整文件大小,则需要使用与位图图像不同的格式。

答案 3 :(得分:0)

  • 您确定它是JPEG格式,而不是其他具有JPEG文件扩展名的文件格式吗?
  • 将JPEG质量设置得更低。