Solved

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

Posted on 2008-09-29
3
427 Views
Last Modified: 2013-11-07
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
Comment
Question by:DavinchiSAT
3 Comments
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 22597885
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
 
LVL 3

Expert Comment

by:Diveblue
ID: 22597895
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
 

Author Comment

by:DavinchiSAT
ID: 22597929
it works!!!!!!!!!!!!!!!!!!!,

tnks!!!!

got the points!!
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now