Medesimo tuo problema
Guarda questa mia procedura e riadattala :
codice:
private bool SaveImage(Stream File,string FILE_ROOT,string FILE_NAME,ref string RETURN_CODE)
{
try
{
int AP_W = 0;
int AP_H = 0;
System.Drawing.Image Img = System.Drawing.Image.FromStream(File);
System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
// Resize and Save Image
this.GetImageResizedValue(Img, ref AP_W, ref AP_H);
Bitmap imgOutput = new Bitmap(Img, AP_W, AP_H);
Graphics myresizer;
myresizer = Graphics.FromImage(imgOutput);
myresizer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
myresizer.DrawImage(Img, 0, 0, AP_W, AP_H);
imgOutput.Save(FILE_ROOT + "\\" + FILE_NAME, System.Drawing.Imaging.ImageFormat.Jpeg);
// Resize and Save Thumbnail
this.GetThumbnailsValue(Img, ref AP_W, ref AP_H);
imgOutput = new Bitmap(Img, AP_W, AP_H);
myresizer = Graphics.FromImage(imgOutput);
myresizer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
myresizer.DrawImage(Img, 0, 0, AP_W, AP_H);
imgOutput.Save(FILE_ROOT + "\\" + ConfigurationManager.AppSettings["IMAGE_PUBLIC_THUMBNAILS"].ToString() + "\\" + FILE_NAME, System.Drawing.Imaging.ImageFormat.Jpeg);
return true;
}
catch(Exception e)
{
return false;
}
}
In teoria basta che gli passi l'immagine . . .
Questa salva tutto (gif , jpg , png) in Jpg quindi occhio . . .
Una foto da 750 kb la riduce a 800 x 600 in soli 50kb 
Fammi sapere