• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 461
  • Last Modified:

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

0
DavinchiSAT
Asked:
DavinchiSAT
1 Solution
 
Mike TomlinsonMiddle 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

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now