Why in a resize process, the System.Drawing.Bitmap.Save method create a larger file than original??

I'm doing a resize function in c#, when I resize a file image with sizes: 2832x2128 weights 1.62MB, the result of doing Bitmap.Save is a file with sizes: 1024x768px, but the weight of the new file is 1.74MB, which i don't understand why happens.

the code is the following:
public System.Drawing.Bitmap CopyBitmap(Bitmap source, Rectangle part)
        {
            Bitmap bmp = new Bitmap(part.Width, part.Height, source.PixelFormat);
            Graphics g = Graphics.FromImage(bmp);
            g.DrawImage(source, part.X, part.Y, part.Width, part.Height);
            g.Dispose();
            return bmp;
        }
 
 
public void redim()
{
Bitmap bmpOrig = new Bitmap("c:\\original.jpg"); // file 2832x2128, 1.62MB
 
            int newWidth = bmpOrig.Width;
            int newHeight = bmpOrig.Height;
            float relacionAspecto = 0;
 
            if (bmpOrig.Width > bmpOrig.Height)
            {
 
                newWidth = 1024;
                relacionAspecto = (float)((float)bmpOrig.Height / bmpOrig.Width);
                newHeight = (int)Math.Round(newWidth * relacionAspecto);
            }
            else
            {
 
                newHeight = 1024;
                relacionAspecto = (float)((float)bmpOrig.Width / bmpOrig.Height);
                newWidth = (int)Math.Round(newHeight * relacionAspecto);
            }
 
 
            Bitmap nueva = CopyBitmap(bmpOrig, new Rectangle(0, 0, newWidth, newHeight));
 
            bmpOrig.Dispose();
 
            nueva.Save(@"C:\resize.jpg"); // file with 1024x768, 1.74MB
 
            nueva.Dispose();
}

Open in new window

DavinchiSATAsked:
Who is Participating?
 
Mike TomlinsonConnect With a Mentor Middle School Assistant TeacherCommented:
It's because you are NOT saving the new image as a JPG!

    nueva.Save(@"C:\resize.jpg"); // file with 1024x768, 1.74MB

What your code above actually does is create a Bitmap file with a ".jpg" extension.  =\

You need to use the SECOND parameter to Bitmap.Save() to specify the JPEG format:
http://msdn.microsoft.com/en-us/library/9t4syfhh.aspx

    nueva.Save(@"c:\resize.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
0
 
DiveblueCommented:
Since you created the bitmap from a file, the image was decompressed using whatever format compressed the file to begin with.  Now you can use the overload() of BitMap.Save() to specify an ImageFormat property that changes the image type from JPEG to GIF or TIFF or PNG or BMP, etc.  Using the overload of BitMap.Save that takes Codec arguments may allow you greater control over the specific compression algorithm used to save the file.

0
 
DavinchiSATAuthor Commented:
it works!!!!!!!!!!!!!!!!!!!,

tnks!!!!

got the points!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.